如何刪除所有的 git commit 歷史

筆者網站的結構從發布以來就存在諸多問題,一同發布的兩個 theme 也有着很多不盡如人意的地方。好在前一段時間的大更新修復了很多彆扭的元素,同時也刪除了很多不需要的內容。因此筆者就想不如做得徹底一點,把 git commit 的歷史也都一併刪除了吧。

刪除全部 git commit 歷史的使用場景其實並不多,建議諸位不要在多人協作的開源項目中這麼做。即使是自己的項目,也最好保留一些重要的 commit,說不定什麼時候突然想不起來的開發思路就從曾經的 commit 中找到了(如果喜歡懷舊的話,說不定還可以看着 commit 觸景生情,回憶自己開發過程的點滴)。所以想要清理部分 commit 的朋友可以參考 GitLab 的這篇文章:「How (and why!) to keep your Git commit history clean」,在這裡就不過多贅述了。

筆者有清理 commit 想法的首要原因是筆者個人項目中無用的 commit 略多,其次便是像網站這種 repo 中保留 commit 好像也沒什麼必要,因此筆者以後全當「GitHub Pages」是個內容存放平臺,不再追蹤修改歷史了。於是筆者就遵從了網路上找到的這個方法進行清理:「how to delete all commit history in github?」

以下是操作步驟(和原鏈接的思路一模一樣,本篇文章只是記錄,詳細內容看原鏈接就好):

# checkout a tmp branch
git checkout --orphan tmp_branch

# add all
git add -A

# commit
git commit -am "first commit"

# delete master branch
git branch -D master

# rename current to master
git branch -m master

# force push to the remote repo
git push -f origin master

這樣之後筆者的 repo 就只保留一個 commit 了。清理之後的感受真的太爽了!就像清空回收站一樣~

最後還是希望各位謹慎清理,希望大家和筆者一樣清理得開心 (^u^)