git 将所有分支从 repo1 推送到 repo2

git push all branches from repo1 to repo2

我已将 Repo1 从 github 克隆到我的本地。 然后使用 git remote add new-origin 命令添加了 Repo2 的 url。

Repo1 包含 100 个分支,所以我无法检查每个分支

我正在尝试使用 git push new-origin --all

将所有分支推送到 Repo2

但只有 Repo1 的 master 分支被推送到 Repo2。

如何在不检查 Repo1 的所有分支的情况下将 Repo1 的所有 100 个分支推送到 Repo2

注意:我不想使用裸仓库或镜像仓库

我认为它只会推送所有本地分支,所以我猜你必须首先检查所有origin的分支然后推送它们。

这个有用吗?

git branch # should only show master
# check-out every single branch
git branch -a | grep origin | sed 's|remotes/origin/||' | xargs -I {} git checkout {}
git branch # should now show all branches
git push new-origin --all

(注意 - 这也会推送 origin 中没有的本地内容)

------评论后-也许试试这个-----

git branch -a | grep origin \
  | sed 's|remotes/origin/||' \
  | xargs -I {} git push new-origin origin/{}:refs/heads/{}

应该只列出原点上的所有分支,然后将它们全部推送到 new-origin

上具有相同名称的新分支

如果任何分支名称中有空格(如果可能),它可能无法工作。

要在尝试之前查看它会做什么,请将最后一行更改为:

  | xargs -I {} echo git push new-origin origin/{}:refs/heads/{}

那你高兴了就去掉echo,看看