Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Git 版本控制撤銷操作全攻略:從修改 Commit 訊息到重寫歷史

編輯:關於 Linux

Git 強大的歷史管理機制讓幾乎所有操作都可撤銷。本文針對六大經典場景(公開提交回滾、修正 Commit 訊息、丟棄本地修改、重設本地提交、Reset 後悔藥、Reflog 找回遺失提交)提供標準指令與原理解析,助您從容應對版控災難。

Git 撤銷操作流程圖

場景一:撤銷已推送的公開提交(最安全)

指令:git revert <SHA>

原理:建立一個新提交,內容與指定提交完全相反(刪除變新增、新增變刪除)。不改寫歷史,可直接 git push,團隊協作首選。

場景二:修正最後一個 Commit 訊息(未推送)

指令:git commit --amend -m "Fixes bug #42"

原理:以新提交取代最近一次提交,若暫存區無新異動則僅修改訊息。會改寫歷史,僅限未推送的本地提交使用。

場景三:丟棄工作區未暫存的修改

指令:git checkout -- <filename>

原理:將工作區檔案還原至 HEAD(或指定分支/提交)狀態。修改永久消失,執行前請用 git diff 確認。

場景四:重設本地近期提交(未推送)

軟重設(保留修改在暫存區):git reset <last-good-SHA>

硬重設(連同工作區修改一併丟棄):git reset --hard <last-good-SHA>

原理:將 HEAD 指標移動至指定提交,彷彿後續提交從未發生。--hard 具破壞性,謹慎使用。

場景五:Reset 後反悔,找回被移除的提交

指令:git reflog → 找到目標 SHA → git reset --hard <SHA> 或 git checkout <SHA> -- <file>

原理:reflog 記錄 HEAD 所有移動歷史(含 reset、rebase、checkout、commit),是找回「遺失提交」的終極安全網。

場景六:修改較早的提交(互動式 Rebase)

git rebase -i HEAD~3
# 編輯器中將目標提交前的 pick 改為 edit/reword/squash
# 依提示操作後 git rebase --continue

警告:Rebase 改寫歷史,嚴禁用於已推送至共享分支的提交。

決策速查表

場景指令是否改寫歷史適用階段
公開提交回滾git revert否已推送
修正最新訊息git commit --amend是未推送
丟棄工作區修改git checkout -- file否未暫存
移除近期本地提交git reset [--hard]是未推送
找回 Reset 遺失提交git reflog否任何時候
修改歷史提交內容/訊息git rebase -i是未推送
Copyright © Windows教程網 All Rights Reserved