问题描述
场景:当你提交的时候,发现跟要合并的流有冲突,你需要解决完冲突再次提交。 如果在SVN时代,你可以直接在本地解决完冲突再提交就可以了,因为SVN会把正确的代码先提交到服务器,至于有冲突的代码,你需要在本地解决完冲突再提交。
但在Git中这样做行不通,Git中每次提交都是完整的,也就是说,即使你这次提交有中冲突的代码,它也一并会推送到要合并的流,每次提交会有一个change_id,当你解决完冲突提交后,这个change_id又会发生变化。这样导致的直接后果是:由于Git是由提交的先后顺序依次合并,因为第一次合并有冲突,后面所有的合并动作都会挂起。这显然不是我们想看到的。但如果解决问题前和解决问题后的change_id不变,这样对于Git来说,则相当于一次提交,这样就可以解决提交冲突的问题了。
解决方案
Git的amend命令支持commit时不修改change_id,命令是:git commit --amend。