git撤銷更改的門道

程序員小迷 2024-04-23 16:14:14

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等編程技術的技巧經驗分享),若作品對您有幫助,請關注、分享、點贊、收藏、在看、喜歡,您的支持是我們爲您提供幫助的最大動力。

歡迎關注。助您在編程路上越走越好!

0 阅读:0

程序員小迷

簡介:致力于Android、C等編程技術的技巧經驗分享