概述
在我們日常使用git的過程中難免會出現commit提交有問題的情況,因此我將自己在日常開發過程中常用的修改commit的方法總結如下。
修改commit歷史
我們假設這樣一個場景,程序員小吳創建了一個文本如下所示:

在沒有仔細檢查的情況下進行了一次提交:

然后此時小吳看到自己原來犯了一個低級錯誤寫成了“1+1=1”,這太尷尬了,馬上着手開始修改。

修改完成之后,此時他就犯迷糊了:“如果直接提交是可以直接修改這個錯誤,但同時會有commit記錄,萬一被人發現這個小錯誤多尷尬。我吳某人一世英名可不能毀於一次commit呀”。此時小吳開始網上搜集資料去解決這個問題,他很容易找到了第一種解決方法。
在commit時通過添加--amend參數進行修改
小吳思考之后執行了如下命令:
git add test.txt
git commmit --amend -m "第二次正常提交"

此時他通過git log --graph命令查看提交歷史,果然第一次提交歷史沒有了。小吳很開心,繼續很happy的寫代碼,但是寫了一段時間之后,發現其實添加空格那次commit操作記錄是沒必要存在的。如果還是剛才的方法顯然沒法改此次commit記錄。

因此小吳又走上了艱苦卓越的查找資料之路,功夫不負有心人,小吳終於找到了他想要的解決方法。
通過git rebase -i 命令將多次提交合並成一次提交
因此,小吳執行了如下命令
# HEAD~2表示HEAD前兩次的提交,該例子指的是從coomit id為ba9bb257
# 因為該命令在更改是必須給出想要修改的最近一次提交的父提交作為參數
# 命令等價於
# git reabse -i ba9bb257
git rebase -i HEAD~2
執行結果如下:
下邊注釋部分給出的是修改的命令格式寫法。
由於我們是不想要添加一個空格這種commit記錄的因此我們需要通過drop策略來刪除此次commit歷史。
修改后的內容如下:

保存后彈出新的界面如下:

刪除“添加空格這一行”,然后保留“增加1+2”這一行。

保存退出。查看提交記錄:

總結
本文主要總結了常用的修改commit記錄的兩種方法,當然可能不太全面。歡迎各位小伙伴補充,謝謝!!
