天天看点

git 冲突问题反思操作记录事件反思git rebase -i结束语

上周五提交代码冲突了一次,造成了代码回滚。并且短时间内开发环境在特定业务模块报错。于是,今天有空,赶紧好好补习下git相关知识。

操作记录

由于之前工作中使用merge造成过代码丢失,所以现在经常使用rebase合并代码。这次也是一样,习惯性的将开发分支使用git rebase -i hash 将开发的一系列commit整理成了一个,然后一并 rebase 到了develop分支。但是当前版本需求改动较大。这次rebase还是发生很多冲突。紧接着使用了git mergetool工具来解决冲突。但是由于文件结构变更。尽管小心翼翼,逐行比对但还是造成了代码丢失。

事件反思

通过事实反馈,一度怀疑是自己的操作有问题。感觉最可能出错的,只能是逐行比时,不小心造成代码误删了。

直至今天,我在使用git rebase -i 再次合并多个commit时发现了问题。明明后提交的东西竟让被git在rebase下前面的commit覆盖。于是仔细回想了下对git rebase -i 的操作流程。 从最后一个开始由pick转变成squash的。之前也是这样操作,那是不是之前也出现过这个问题,但没被注意到呢。于是我决定改用顺序从第二个开始squash这会反而是正确的。这就是是什么原因?

git rebase -i

结束语