问题描述
我已经将Repo1从github克隆到了我的本地计算机。 然后使用 git remote add new-origin 命令添加Repo2的网址。
Repo1包含100个分支,所以我无法为每个分支结帐
我正在尝试使用 git push new-origin --all
将所有分支推送到Repo2但只有Repo1的主分支被推送到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
,然后查看