做版控很重要,但版控的內容也非常關鍵,如果不小放把不該放上去的資訊(例如帳號、密碼或個人玉照)給 commit 了話,那麼大家都會看的到唷!
如何修改 commit 歷史紀錄,把不該出現的紀錄移除,可以參考下列情境:
假設我們的版控歷史紀錄如下:
R-A-B-C-D-E-HEAD
接下來要移除 B 跟 C 的 commit tree,變成
R-A-D’-E-HEAD
依序執行下列指令可以移除 B & C
1 | # detach head and move to D commit |
指令裡面的 <SHA-for-X> 是該 commit 紀錄的前7個字元,如果你用sourcetree了話,可以從下圖找到相關資訊。

在做版控的過程中,注意每次的 commit 內容和說明是必須的,而 push 到 remotes 前將版控紀錄整理好,讓 commit tree 長的漂漂亮亮是可以讓之後看的人身心愉悅的,可以參考Git 版本控制系統(3) 還沒 push 前可以做的事,學習如何整理你的版控歷史紀錄。
注意!這裡提到的方法,可刪除並更新遠端的歷史紀錄,但是會造成其他人 repository 的歷史紀錄變的怪怪的,這時候建議砍掉重新從遠端下載一份,會比較”乾淨”。
補充
如果是要刪除最後一次的 commit,並請更新至遠端,可以透過下列方式:
1 | # move HEAD to previous commit, and discard all working copy changes |
其中 HEAD 後面的 ^ 是指前一版本的意思。
參考資料: