Git PR中显示已删除文件但仓库无该文件的解决方法
问题根因
这个问题本质是分支基准点不一致导致的:你创建develop-new分支时,拉取的是还没执行.history删除操作的旧版develop代码。后续开发过程中develop-new一直没同步develop上删除.history的那次提交,两个分支的共同祖先还停留在.history存在的版本,PR做差异比对时会把提交历史里的状态差算进来,就会出现明明本地两个分支都找不到.history文件夹,PR变更列表里却显示它待删除的情况。
解决操作
全程不需要手动创建或删除不存在的.history文件夹,按以下步骤同步分支基准即可:
- 先切到本地
develop分支,拉取远端最新代码,保证本地develop和Bitbucket上的远端分支完全一致
git checkout develop git pull origin develop
- 切回
develop-new分支,执行变基操作,把develop-new的起始基准点更新到最新的develop提交上
git checkout develop-new git rebase develop
如果变基过程中弹出冲突提示,直接确认保留
develop分支删除.history的状态即可;没有冲突就直接进入下一步。
- 把变基后的
develop-new分支强制推送到远端,变基会修改提交历史,普通推送会被拒绝,必须加强制推送参数
git push -f origin develop-new
推送完成后刷新Bitbucket的PR页面,变更列表里的.history待删除条目就会自动消失,剩下的就是develop-new分支本身的正常代码改动。
可选替代方案
如果不想用变基,也可以用merge方式同步代码,把上面第二步的git rebase develop换成git merge develop,解决效果完全一致,只是会额外生成一条merge提交记录,提交线不如变基整洁。
注意:强制推送前先确认develop-new分支只有你个人在使用,避免覆盖其他协作者提交的代码。
内容的提问来源于stack exchange,提问作者Ska
相关产品推荐
相关产品推荐

