1.git checkout -- 文件
撤銷對工作區某文件的修改。
git checkout .
撤銷本地所有修改的、沒有提交的文件的修改,都返回到原來的狀態。
2.git reset --hard [commit]
將工作區和暫存區的內容強制修改爲commit時本地代碼庫的狀態。
3.git reset --mixed [commit]
將暫存區的內容強制修改爲commit時本地代碼庫的狀態,工作區的內容不變。
4.git reset --soft [commit]
將本地代碼庫的內容修改爲commit時的狀態,暫存區和工作區的內容不變。
5.git revert [commit]
1)當commit爲常規commit,非merge commit時
將選擇的某一次提交撤銷,撤銷後會生成一個新的commit,撤銷掉的提交記錄仍然存在。
2)當commit爲merge commit時
merge commit代表有多個分支進行了合並,若直接使用 git revert <commit id>,git 也不知道到底要撤銷哪一個分支上的內容。這時需要指定一個 parent number 標識出"主線",主線的內容將會保留,而另一條分支的內容將被 revert。
從 git show <commit id>命令的結果中可以看到,merge commit 的 parent 分別爲 a111111 和 b222222,其中 a111111 代表 master 分支,b222222 代表 另一個 分支。需要添加 -m 選項以代表這次 revert 的是一個 merge commit。-m 選項接收的參數是一個數字,數字取值爲 1 和 2,也就是 Merge 行裏面列出來的第一個還是第二個,其含義用來保留哪個分支。
例如:
git revert -m 1 ab82453
微風不燥,陽光正好,你就像風一樣經過這裏,願你停留的片刻溫暖舒心。
我是程序員小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等編程技術的技巧經驗分享),若作品對您有幫助,請關注、分享、點贊、收藏、在看、喜歡,您的支持是我們爲您提供幫助的最大動力。
歡迎關注。助您在編程路上越走越好!