如何将master分支变更拉取到旧分支?Bitbucket PR引入他人代码问题
解决方案
方法一:使用 Rebase 同步(推荐,提交历史更整洁)
- 先确保本地
master是最新版本:git checkout master git pull origin master - 切回你的旧分支(假设分支名为
old-branch):git checkout old-branch - 将
master的变更重放到旧分支上:git rebase master - 如果遇到冲突,先手动修改冲突文件,然后执行:
要是中途想放弃这次 rebase,执行git add . git rebase --continuegit rebase --abort即可。 - 因为 rebase 修改了提交历史,需要安全地强制推送到远程:
(git push origin old-branch --force-with-lease--force-with-lease比直接--force更安全,能避免意外覆盖他人在该分支的提交)
方法二:使用 Merge 同步(保留原提交历史)
如果不想修改旧分支的提交历史,可以用 merge:
- 同样先更新本地
master:git checkout master git pull origin master - 切回旧分支:
git checkout old-branch - 合并
master的变更到旧分支:git merge master - 解决冲突后,提交合并结果:
git add . git commit # 若Git自动生成合并提交信息,直接保存即可 - 推送到远程:
git push origin old-branch
为什么你之前的操作没生效?
你设置 pull.rebase true 只是改变了当前分支拉取自身远程变更时的行为,但并没有主动把 master 的变更合并到旧分支里。要同步 master 的内容,必须主动执行 rebase 或 merge 操作,而不是单纯拉取旧分支自己的远程更新。
之后每次要在旧分支工作前,重复上述更新 master 再同步的步骤,就能避免PR里引入他人未同步的工作内容了。
内容的提问来源于stack exchange,提问作者snakewilliams
相关产品推荐
相关产品推荐

