Git 撤消合併

Azhar Bashir Khan 2022年4月22日
Git 撤消合併

在本教程中,我們將瞭解如何在 Git 中撤消合併。

在 Git 中,我們將一個分支與另一個分支合併,以將來自另一個分支的更改整合到當前分支的 HEAD 中。

有時,我們可能希望撤消這種合併。我們可以使用 Git 命令 git reset 撤消 git 合併。

我們現在將用一個例子來說明這一點。

在 Git 中使用 git reset 撤消合併

假設我們合併了一個分支即 feature1main 分支將來自該分支的更改整合到 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 sha23ad9ad 是合併分支 feature1 之前提交的 commit sha

我們將使用帶有 --hard 選項的 git reset 命令將 main 分支重置為合併前的狀態。

git reset 命令的語法如下。

git reset --hard commit_sha_before_merge

我們現在將執行 git reset 如下。

$ git reset --hard 23ad9ad

因此,我們現在撤消了合併(即)重置當前分支的 HEADmain 到合併前的提交。

請注意,執行上面給出的 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 之間不同的檔案;但它會保留索引和工作樹之間不同的檔案的更改(即)尚未新增到索引的更改。

相關文章 - Git Reset

相關文章 - Git Merge