Git 撤消合併
在本教程中,我們將瞭解如何在 Git 中撤消合併。
在 Git 中,我們將一個分支與另一個分支合併,以將來自另一個分支的更改整合到當前分支的 HEAD
中。
有時,我們可能希望撤消這種合併。我們可以使用 Git 命令 git reset
撤消 git 合併。
我們現在將用一個例子來說明這一點。
在 Git 中使用 git reset
撤消合併
假設我們合併了一個分支即 feature1
與 main
分支將來自該分支的更改整合到 main
分支。
現在,我們決定撤消此合併。我們可以為此使用 git reset
。
首先,我們需要從 Git 的日誌中找到合併前的 commit sha
。為此,我們可以使用 git log
命令。
我們將執行 git log
命令如下。
$ git log --oneline
0e25143 Merge branch 'feature1'
23ad9ad Add the initial code base
我們可以看到 0e25143
是從 feature1
分支合併到 main
分支的 commit sha
。23ad9ad
是合併分支 feature1
之前提交的 commit sha
。
我們將使用帶有 --hard
選項的 git reset
命令將 main
分支重置為合併前的狀態。
git reset
命令的語法如下。
git reset --hard commit_sha_before_merge
我們現在將執行 git reset
如下。
$ git reset --hard 23ad9ad
因此,我們現在撤消了合併(即)重置當前分支的 HEAD
即 main
到合併前的提交。
請注意,執行上面給出的 git reset
命令後,任何未提交的更改或未隱藏的更改都將丟失。
我們也可以如下使用 git reset
命令,特別是如果最後一次提交是合併的。
$ git reset --hard HEAD~1
它通過一次提交重置當前分支的 HEAD
。
同樣,我們也可以這樣做。
$ git reset --hard ORIG_HEAD
ORIG_HEAD
指向合併發生之前的提交。
一個更安全的選擇是將 --merge
選項與 git reset
一起使用,如下所示。
$ git reset --merge ORIG_HEAD
git reset
命令的 --merge
選項導致重置索引並更新提交和 HEAD
之間不同的檔案;但它會保留索引和工作樹之間不同的檔案的更改(即)尚未新增到索引的更改。