如何修改Git已提交的日志


情況一:最后一次提交且未push

執行以下命令:

git commit --amend

git會打開$EDITOR編輯器,它會加載這次提交的日志,這樣我們就可以在上面編輯,編輯后保存即完成此次的修改。

情況二:最后一次提交且已push到服務器

執行以下命令:

git commit --amend
git push origin master --force

和情況一的做法一樣。使用push推送到遠程服務器是需要加上--force,讓服務器更新歷史記錄。

需要注意的是:把修改后的日志強制push到Git服務器,如果別人本地的副本有修改,很有可能會導致他們同步不了,所以最好和他們核對下。

情況三:舊的提交且未推送

假設commit是倒數第3次提交,這個可以使用git log查看,

$ git log
commit b1b451d218cc23b6c769f373164f2b89cf54d0aa
Author: clcaza <clcaza@sina.cn>
Date:  Sat Mar 10 19:09:08 2018 +0800

  添加內容d

commit 04f0d1809d5d31cc6e930efcba47a5f3f7e93319
Author: clcaza <clcaza@sina.cn>
Date:  Sat Mar 10 19:08:24 2018 +0800

  添加內容c

commit 94fc8feb916442d56b558d5c370f18f057298921
Author: clcaza <clcaza@sina.cn>
Date:  Sat Mar 10 19:07:08 2018 +0800

  添加內容a

commit fd517efa9faf6a5ec71d0eac38fbcfa0cd689f40
Author: clcaza <clcaza@sina.cn>
Date:  Sat Mar 10 19:06:21 2018 +0800

  init

執行rebase

git rebase -i HEAD~3

它會打開一個編輯器,它會把最后前3次的提交顯示出來,類似於:

pick 94fc8fe 添加內容a
pick 04f0d18 添加內容c
pick b1b451d 添加內容d

你會看到,它是按提交的順序顯示的,與git log顯示的順序相反。定位到你要編輯日志的那一行,把pick修改為edit,然后保存。

接着就是修改日志內容了

git commit --amend

完成編輯日志后,記得執行:

git rebase --continue

Rebase目的是打開提交的歷史記錄,讓您選擇要修改的內容。 Git會讓你在一個新的分支修改內容。 git rebase --continue則是讓你重新回到之前的分支。

情況四:舊的提交且已push到服務器

前面編輯日志的操作是和情況三是一樣的:

git rebase -i HEAD~X
git commit --amend
git rebase --continue

X表示倒數第幾次提交。

完成編輯日志后,執行push:

git push origin master --force


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM