背景
在使用git提交代碼時,會遇到commit message 寫錯的情況。
- 本地commit message出錯
- 使用了git commit 而沒有將代碼push,
- 在向遠程服務(wù)器push的時候,由于遠程服務(wù)器的格式限定導(dǎo)致push錯誤,需要修改git commit信息才能提交完成
- 提交到遠程服務(wù)器上后,發(fā)現(xiàn)commit 出錯
1、查看 git日志
git log
2、確定那些commit是需要修改的
最近commit順序
- 如果想修改最近的commit message ,可以使用
git rebase來制定, ``HEAD~3表示最新的三條,如上圖所以的順序
git rebase -i HEAD~3
- 或者可以使用每次 commit 生成的哈希值 SHA來定位,如想修改圖上的第二條記錄,可以使用
git rebase -i 72b555b763d47e2b02f7938765160dd0d414c376
# 或者使用簡碼
git rebase -i 72b555b7
大多數(shù)情況下簡碼唯一時,他們是等效的
- 現(xiàn)在以修改最新的前三條 commit為例
git rebase -i HEAD~3
修改commit message
-
可以看到頂部有三列, command、SHA-1 commit message
- 如果需要修改某一個 commit ,就把它前面的 pick 改成 edit
- 其他地方保持不變
- 現(xiàn)在修改第2個 commit message
修改commit message
- 修改完成之后,保存修改
3、修改 commit message
-
講過上面的步驟,可以看到
保存需要修改的commit后 -
使用
git commit --amend修改每個 commit
修改commit 信息 -
修改完 commir message 后,使用
git rebase --continue提交
修改完成保存信息 -
如果后面還有記錄,重復(fù)上面的步驟
- 使用
git commit --amend修改提交 - 使用 `` git rebase --continue
提交修改
- 使用
4、更新到遠程服務(wù)器
- 強制更新到遠程服務(wù)器
git push origin master -f
- 為什么要強制 push?
-
如果不使用 -f 操作,那么我們的 edit 會添加到commit后面,而不是更新原來的 commit
git log 順序
-
可以看到 commit message 已經(jīng)成功更新