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 之間不同的檔案;但它會保留索引和工作樹之間不同的檔案的更改(即)尚未新增到索引的更改。