背景
我有三个分支:master,CI和dev,master用于发不到正式环境,CI用于发不到测试环境,dev是自己的开发分支。其中dev分支需要经常和master分支保持一致,使用的是rebase操作。
问题
上周五照常在dev分支上开发,提交commit,rebase master之后,checkout到CI分支,将dev分支合并到CI分支时,显示两个改动的文件为Deleted(如图2所示)。但这两个文件是这一次提交的重要改动,很确认这个文件没有被删掉(如图1所示),而且通过各种方式查看表明这些文件是存在的。
- 使用git diff CI dev表明这俩文件存在并且有差异
- 使用git show commitId是能够看到改动的文件的
图1
图2
图3 两个分支的公共祖先commit
异常
- 感觉像是git在dev分支上找不到InquiryReportDetailDTO和InquiryReportServiceImpl这两个文件
- 这两个文件所在的servicePack文件夹是重命名过的
- 在CI分支上执行git merge dev是将dev分支上从公共祖先节点往后的四个节点的变化往CI分支上合并,出现了上述问题,在解决上述问题的过程中,我尝试一个commit一个commit地往CI上合,是成功的,并且达到预期结果的
以上
上述问题实在奇怪,自己解决不了,求助于各位大佬,希望知道的大佬不吝赐教:为什么以及怎么办。
万分感谢!
自问自答
关键是产生的原因,这里自我总结一下: