問題描述
場景:當你提交的時候,發現跟要合並的流有沖突,你需要解決完沖突再次提交。 如果在SVN時代,你可以直接在本地解決完沖突再提交就可以了,因為SVN會把正確的代碼先提交到服務器,至於有沖突的代碼,你需要在本地解決完沖突再提交。
但在Git中這樣做行不通,Git中每次提交都是完整的,也就是說,即使你這次提交有中沖突的代碼,它也一並會推送到要合並的流,每次提交會有一個change_id,當你解決完沖突提交后,這個change_id又會發生變化。這樣導致的直接后果是:由於Git是由提交的先后順序依次合並,因為第一次合並有沖突,后面所有的合並動作都會掛起。這顯然不是我們想看到的。但如果解決問題前和解決問題后的change_id不變,這樣對於Git來說,則相當於一次提交,這樣就可以解決提交沖突的問題了。
解決方案
Git的amend命令支持commit時不修改change_id,命令是:git commit --amend。