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

如何无需检出本地分支,将Git远程所有分支推送到另一远程?

如何将Git一个远程的所有分支推送到另一个远程(无需本地检出)

我来帮你搞定这个问题——你之前用git push origin2 --all没效果,是因为这个命令只会推送本地已经创建的分支,而你的本地只有master,那些feature1/2/3都只是远程追踪分支(存在于remotes/origin/下),不会被--all识别。

要实现把origin的所有远程分支推送到origin2,你需要用Git的refspec语法来直接指定要推送的分支映射,无需在本地检出任何分支。

核心命令

直接在你的本地仓库(也就是示例中的/project2)执行这条命令:

git push origin2 'refs/remotes/origin/*:refs/heads/*'

命令解释

  • refs/remotes/origin/*:匹配origin远程下的所有远程追踪分支(比如remotes/origin/feature1、remotes/origin/master等)
  • ::分隔符,左边是源分支,右边是目标分支
  • refs/heads/*:将源分支推送到origin2远程的对应分支(也就是在origin2仓库中创建同名的本地分支,远程仓库的分支本质就是它的本地分支)

验证效果

执行完命令后,你会看到类似这样的输出:

# * [new branch]      origin/feature1 -> feature1
# * [new branch]      origin/feature2 -> feature2
# * [new branch]      origin/feature3 -> feature3
# * [new branch]      origin/master -> master

然后去/project3(也就是origin2对应的仓库)查看分支:

cd ${project3_dir}
git branch -a
# * master
#   feature1
#   feature2
#   feature3
# remotes/origin/HEAD -> origin/master
# remotes/origin/master

可以看到所有从origin来的分支都已经推送到origin2了。

补充说明

  • 如果只想推送特定分支,比如只推以feature开头的分支,可以修改refspec:
    git push origin2 'refs/remotes/origin/feature*:refs/heads/feature*'
    
  • 这条命令是一次性操作,如果之后origin有新分支,需要再次执行该命令来同步到origin2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:15:18