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

git将所有分支从repo1推送到repo2,git,github,svn,gitlab,gerrit,Git,Github,Svn,Gitlab,Gerrit,我已将Repo1从github克隆到本地。 然后使用git remote add new origin命令添加Repo2的url Repo1包含100个分支,因此我无法对每个分支进行签出 我正在尝试使用git push new origin--all将所有分支推送到Repo2 但只有Repo1的主分支被推送到Repo2 如何将Repo1的所有100个分支推送到Repo2而不签出到Repo1的所有分支 注意:我不想使用裸存储库或镜像存储库我认为它只会推送所有本地分支,因此我想您必须首先签出所有源代

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

Repo1包含100个分支,因此我无法对每个分支进行签出

我正在尝试使用git push new origin--all将所有分支推送到Repo2

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

如何将Repo1的所有100个分支推送到Repo2而不签出到Repo1的所有分支


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

我认为它只会推送所有本地分支,因此我想您必须首先签出所有
源代码
的分支,然后推送它们

这行吗

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
(当心-这也是推送不在
源代码
中的本地内容)

------评论之后-试试这个-----

这应该只列出原点上的所有分支,然后将它们全部推送到新原点上具有相同名称的新分支

如果在任何分支名称中有空格(如果可能的话),它可能不会工作

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

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

如果您满意,请删除
echo
,然后查看嗨,Romain,Repo1是一个开源软件,我正在试用该软件。我想将完整的Repo1源复制到我的Repo2。而且,我经常想将Repo1的最新更改更新到我的repo2。为什么您不想使用裸存储库来实现这一点?如果您使用“-bare”克隆原始的repo,那么您使用“-all”的推送将正常工作。嗨,Marcelo,实际上我正在试验开源。所以每次我需要用开源更改更新我的repo时。所以我不用bareAlex,谢谢你的回复。不检查所有的分支,不使用镜像或裸体,我可以做到这一点。亚历克斯,它解决了我的问题。谢谢你的支持。我对这个解决方案很满意。
  | xargs -I {} echo git push new-origin origin/{}:refs/heads/{}