You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Fork仓库:如何一次性从上游拉取合并所有本地分支?

一次性更新所有本地分支的实用方法

嘿,手动逐个切换分支同步上游更新确实挺繁琐的,我分享几个能批量搞定的方案,你可以根据自己的需求选:

方法1:用Git内置命令批量遍历分支

你可以结合git for-each-ref和shell循环来自动处理所有分支,步骤如下:

  1. 先拉取上游仓库的最新代码:
git fetch upstream
  1. 执行批量更新脚本(这里默认你要同步上游的master分支,且排除本地master分支,如果是其他分支,替换upstream/master即可):
git for-each-ref --format='%(refname:short)' refs/heads/ | grep -v master | while read branch; do
    echo "Updating branch: $branch"
    git checkout "$branch"
    # 使用快进合并,避免不必要的合并提交;如果需要变基,换成 git rebase upstream/master
    git merge upstream/master --ff-only
done

这个脚本会自动遍历所有本地非master分支,逐个切换并合并上游的最新代码。如果某个分支和上游有冲突,脚本会暂停在该分支,你处理完冲突后,手动执行git merge --continue(或git rebase --continue),然后重新运行脚本即可。

方法2:提前检查分支冲突(可选)

如果担心冲突打乱节奏,可以先批量检查每个分支和上游的差异,提前心里有数:

git fetch upstream
git for-each-ref --format='%(refname:short)' refs/heads/ | grep -v master | while read branch; do
    echo "=== Checking differences for $branch ==="
    git log --oneline upstream/master.."$branch"
done

这个命令会显示每个分支相对于上游master的独有提交,帮你预判可能的冲突点。

重要注意事项

  • 执行前确保所有分支的工作区都是干净的(没有未提交的修改),不然git checkout会失败。如果有未完成的修改,可以先用git stash暂存,更新完后再用git stash pop恢复。
  • 如果你的分支是基于上游的其他分支(比如dev),记得把脚本里的upstream/master替换成对应的上游分支名。

内容的提问来源于stack exchange,提问作者Arnav Borborah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:43:28