如何撤銷上次 Git 提交

對於需要恢復變更或修正錯誤的開發人員來說,撤銷最後一次 Git 提交是一項常見任務。 Git 提供了多種方法來撤銷最近的提交,使您能夠維護乾淨且準確的專案歷史記錄。這些方法包括重置、恢復或修改提交,每種方法都有不同的用途,這取決於您是要保留還是放棄更改。

本指南將使用實際範例示範如何撤銷上次 Git 提交。透過掌握這些技術,您可以有效地管理您的 Git 歷史記錄並確保您的專案保持組織良好且沒有錯誤。

了解 Git 提交

在我們探索如何撤銷 Git 提交之前,理解提交在 Git 中的含義至關重要。提交代表您在特定時刻的工作快照。它封裝了自上次提交以來您所做的所有修改。每次提交都由 SHA-1 雜湊值唯一標識,使 Git 能夠維護更改歷史記錄。

逆轉 Git 提交

有兩種主要技術可以逆轉 Git 提交:git reset 和 git revert。我們將詳細討論每種方法,包括它們的用例和含義。

git reset --soft HEAD~1

使用 git 重置

git reset 指令是一個強大的工具,它允許您將目前的 HEAD 移動或「重設」到指定狀態。以下是如何使用它來撤消上次提交:

git reset --soft HEAD~1

在此命令中,-soft 確保您的變更保留在暫存區域中,HEAD~1 指的是目前提交之前的提交。撤銷提交的變更將保留在您的工作目錄和暫存區域中。

這是一個範例輸出:

Unstaged changes after reset:
M    file1.txt
M    file2.txt

這表示 file1.txt 和 file2.txt 中的變更現已取消暫存。

如果您希望完全放棄提交和所有相關更改,可以使用 –hard 選項:

git reset --hard HEAD~1

請謹慎使用此命令,因為它會永久丟棄上次提交的所有更改。

使用 git 恢復

git revert 指令建立一個新的提交,撤銷先前提交中所做的變更。這是撤銷更改的安全方法,因為它不會更改現有的提交歷史記錄。使用方法如下:

git revert HEAD

此命令將建立一個新的提交,以撤銷上次提交中所做的更改。

這是一個範例輸出:

[master 0a9b2aa] Revert "Add new feature"
 1 file changed, 1 insertion(+), 2 deletions(-)

這表示已建立一個新的提交,該提交可恢復先前提交的變更。

撤銷 Git 提交:擴充範例

使用 git reset:更多範例

重置為特定提交

如果您不僅想撤銷最後一次提交,還想撤銷多次提交,可以透過指定提交哈希而不是 HEAD~1。例如:

git reset --soft 9fceb02

該指令會將 HEAD 移至雜湊值 9fceb02 指定的提交,並且 9fceb02 之後的所有提交的變更都將保留在暫存區域中。

重置未暫存的更改

如果您已進行更改但尚未提交,並且想要撤消這些更改,則可以使用 git reset 而不使用任何提交引用:

git reset --hard

此命令將撤銷所有未暫存的更改,將工作目錄恢復到上次提交的狀態。

使用 git revert:更多範例

恢復一系列提交

如果要撤銷一定範圍的提交,可以使用 git revert 指令指定範圍。例如:

git revert HEAD~3..HEAD

此命令將建立新的提交,以撤銷最後三個提交中所做的變更。

恢復特定提交

如果您想撤銷不是最新提交的特定提交,可以透過指定提交哈希來實現:

git revert 9fceb02

此命令將創建一個新的提交,該提交將撤消哈希指定的提交中所做的更改 9fceb02.

結論

Git 是一個強大的工具,但它的複雜性可能會讓初學者望而生畏。但是,如果清楚地了解如何撤銷提交,您就可以自信地瀏覽 Git。您選擇使用 git reset 還是 git revert 取決於您的特定需求以及每個命令的含義。請記住,掌握 Git 的關鍵是練習和探索。

Joshua James
跟我來
Joshua James 的最新帖子 (看全部)

發佈留言