如何更新基于非master分支创建的Git分支
更新你的branch分支以同步最新的dev分支
这种场景在日常开发里太常见了,别担心,有两种主流方法可以搞定,根据你的需求选就行:
方法一:使用Merge(合并)
这种方法会在branch分支上生成一个新的合并提交,保留分支的历史记录,适合不想改变原有提交历史的情况:
- 先切换到你的branch分支:
git checkout branch - 拉取远程仓库的最新代码(就是你说的fetch+pull,其实
git pull默认就是fetch后merge,不过分开做也没问题):
或者直接一步到位:git fetch origin git merge origin/devgit pull origin dev - 如果出现冲突,手动解决冲突后,提交合并结果:
git add . git commit -m "Merge latest dev into branch" - 最后推送到远程的branch分支:
git push origin branch
方法二:使用Rebase(变基)
这种方法会把branch分支上的所有提交“移动”到最新的dev分支顶端,让提交历史更线性整洁,适合还在自己开发、没有多人协作的branch分支:
- 切换到branch分支:
git checkout branch - 拉取远程dev的最新代码:
git fetch origin - 执行变基操作,把branch基于最新的dev重放:
git rebase origin/dev - 如果遇到冲突,解决冲突后执行:
如果想放弃变基,可以用:git add . git rebase --continuegit rebase --abort - 变基完成后,因为提交历史被修改了,需要强制推送到远程(注意:如果这个branch分支有其他开发者在协作,不要强制推送!):
用git push origin branch --force-with-lease--force-with-lease比单纯的--force更安全,它会检查远程分支是否有你不知道的更新,避免覆盖别人的提交。
小提示
- 如果你的branch是本地私有分支,没人跟你一起开发,优先用Rebase,历史更干净;
- 如果branch已经推送到远程且有其他同事在协作,用Merge更稳妥,不会打乱别人的工作;
- 你平时习惯的fetch+pull其实就是fetch后merge的组合,在这个场景下直接针对dev分支操作就行。
内容的提问来源于stack exchange,提问作者Kosm
相关产品推荐
相关产品推荐

