對於需要恢復變更或修正錯誤的開發人員來說,撤銷最後一次 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 的關鍵是練習和探索。