为何我的PR包含他人提交内容?Git技术问题求助
问题原因解析与确认
嗨,我来帮你把这个Git问题理得明明白白~
首先,你的PR里出现别人的工作,核心原因是你直接把远程master的变更合并到了自己的XXX分支,具体逻辑拆解如下:
- 初始状态:你从本地落后的master分支创建了XXX分支——这时候你的本地master还没同步远程master的新变更,所以XXX分支的起点是旧版的master,和远程master已经存在差异。
- 关键操作:你在XXX分支执行了
git pull origin master,这个命令本质是git fetch origin master(拉取远程master的最新代码)加上git merge origin/master(把远程master的代码合并到当前的XXX分支)。这一步直接把别人提交到远程master的变更,合并进了你的XXX分支里。 - PR对比逻辑:当你创建PR时,Git会对比你的XXX分支和目标分支(也就是远程master)的差异。但因为你已经把远程master的变更合并到了自己的分支,Git会把这些不属于你工作的提交,也当成是XXX分支相对于远程master的“新增内容”,所以就一起出现在PR里了。
你的猜测方向是对的,但更准确的表述不是“PR基于本地master分支”,而是你的本地master落后于远程,且你错误地把远程master的变更合并到了自己的feature分支,导致分支里混入了别人的提交。
补充:正确的同步姿势(避免下次踩坑)
如果想让自己的分支基于最新的master,同时PR里只显示自己的工作,正确的步骤应该是:
- 切换到本地master分支:
git checkout master - 拉取远程master的最新变更,让本地master和远程同步:
git pull origin master - 切回XXX分支:
git checkout XXX - 用rebase或者merge把你的工作同步到最新master上:
- 推荐使用rebase(让提交记录更整洁):
git rebase master - 或者使用merge:
git merge master
- 推荐使用rebase(让提交记录更整洁):
这样处理后,你的XXX分支只会包含你自己的工作变更,PR里就不会出现别人的内容啦。
内容的提问来源于stack exchange,提问作者Mojo
相关产品推荐
相关产品推荐

