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

时间:2020-08-17 12:11:21

标签: git github svn gitlab gerrit

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

Repo1包含100个分支,所以我无法为每个分支结帐

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

将所有分支推送到Repo2

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

我如何在不签出Repo1的所有分支的情况下将Repo1的全部100个分支推入Repo2

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

1 个答案:

答案 0 :(得分:2)

我认为它只会推送所有本地分支,所以我想您首先必须检出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,然后查看