Git操作:多個commit合並,並修改提交信息


寫在前邊

寫這篇文章主要是記錄下,很久之前讀《重構-改善既有代碼的設計》時,看到過作者講過Git可以實現多個細碎操作commit合並為一個有意義的提交,當時查過一些中文信息,寫得不是很清晰。正巧有一個Git管理的腳本倉庫需要大量修改,嘗試踐行下書中的內容:完成一小部分功能就作一次本地commit,直到完成修改后,合並成一個有意義的提交。

這樣做是有意義的,每一次小小的commit保證了工作進度不會因頻繁的檢查而效率低下(每一次提交之前仔細檢查,提交后就無需再重復檢查了,也有助於提升重構者的信心)。

實驗准備

試驗倉庫中本地提交了5次,領先遠端倉庫。我們的目的是將這5次提交合並成一個commit,並且修改最終的提交信息。

git log --pretty

合並多個commit

Git 命令:

git rebase -i HEAD~5
  • 上邊的數字5即合並的版本,之前看到提交信息 構建調整1~5 這五個提交。
  • Git 沒有一個改變歷史工具,但是可以使用變基來變基一系列提交,本文的合並請求就是用變基實現的。

下圖中是已經修改后的,之前這5次提交的前邊都是pick,構建調整1 信息我修改成了一個有意義的提交,為了驗證是否能同時合並commit與修改合並后的提交信息。

按照默認順序,可以將除第一個提交外,都使用 fixupsquash 進行標記,最終你將得到這些commit向上合並,最終變成一個,提交信息是 pick 標記的信息。

這里只關注 picksquashfixup 這三個命令:

  • pick:使用此提交不做操作
  • squash:將指定的提交合並到上邊的pick請求中,保留提交信息
  • fixup:與 squash 類似,但不保留提交信息

保留提交信息是指將最終合並的提交信息包含所合並提交信息,我做了嘗試如圖:

使用 :wq 保存修改后

使用 git log --pretty 查看提交日志,可以看到commit已合並成了一個新的請示,但提交信息是 pick 標記的 commit 提交信息,說明pick標記的提交信息無法修改。

合並多個請求的目標已經完成,接下來修改提交說明。

修改最后一次提交說明

Git 命令:

git commit --amend

執行命令,修改提交信息后,:wq 保存退出。

git log --pretty 查看提交日志

提交信息已經更新,上一步驟的合並多請求也已完成,推送到遠端倉庫就可以了。

結尾

通過本文的描述實踐了合並多個commit並修改提交信息,感覺這個功能很好用,作為有一定代碼潔癖的我,對提交日志也有一定潔癖,畢竟后續日子提交日志可以幫我們快速定位過去的修改。

另外 git rebase 命令給了 editreword 本身也是調用了 git commit --amend 修改的提交信息。為了表示 pick 標記的提交信息不會修改,才做的驗證。

參考

-END-
本文同步於本人CSDN


免責聲明!

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



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