Git 還原多次提交

Azhar Bashir Khan 2023年1月30日 2022年4月22日
  1. 使用 git revert 恢復 Git 中的多個提交
  2. 使用 git reset 恢復 Git 中的多個提交
Git 還原多次提交

在本教程中,我們將瞭解如何在 Git 中恢復多個提交。

在 Git 中,我們可能已經為某些功能開發完成了許多提交,或者提交了一些錯誤修復。

我們現在可能決定放棄這項工作。因此,要將倉庫恢復到完成這些更改之前的狀態,我們需要恢復已完成的多個提交。

我們可以使用 git revert 命令恢復 Git 中的多個提交。

恢復多個提交的另一種方法是使用 git reset 命令。

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

使用 git revert 恢復 Git 中的多個提交

假設我們為一些錯誤修復做了多次提交。

我們可以在 Git 的日誌中看到這些提交,如下所示。

$ git log --oneline
17b787d bug3 fixed
1fefb57 bug2 fixed
8b3560b bug1 fixed
784065c feature1 developed
...

現在,我們決定放棄那些錯誤修復並將倉庫恢復到 bug1 fixed 狀態之前的狀態。

因此,我們可以使用帶有 --no-commit 選項的 git revert 命令。該命令的語法是 git revert --no-commit <commit>

因此,要恢復已完成的錯誤修復的三個提交,我們需要執行以下操作。

$ git revert --no-commit 17b787d784065c
$ git revert --no-commit 1fefb57
$ git revert --no-commit 8b3560b

因此,Git 中的倉庫現在處於提交 bug1 fixed 之前的狀態。

我們使用了提交的 sha1 名稱來還原每個提交。

我們需要在 Git 倉庫中提交工作樹的這種狀態,如下所示。

$ git commit -m "the fixes for bugs 1 2 3 reverted"

使用 git reset 恢復 Git 中的多個提交

假設我們在倉庫中有一些合併提交。那麼使用 git revert 的上述解決方案將不起作用。

在這種情況下,我們需要使用 git reset 命令。

因此,要在 Git 中使用 git reset 恢復多個提交,我們需要執行以下操作。

$ git reset --hard 784065c
$ git reset --soft ORIG_HEAD
$ git commit

因此,我們使用 git reset 命令將倉庫還原到提交歷史中緊接第一個錯誤修復之前的提交,即 784065c feature1 developed

因此,即使我們有一些合併提交,這也有效。

相關文章 - Git Commit

相關文章 - Git Reset