将本地Git仓库推送到新的远程站点,包括所有分支和标签
我有一个本地Git仓库,我想推到一个新的远程仓库(在Beanstalk上设置全新的仓库,如果有的话)。 我的本地回购有几个分支和标签,我想保留所有的历史记录。 它看起来像我基本上只需要做一个git推,但只上传主分支。 我如何推送所有内容,以便在遥控器上获得本地回购的完整副本?
要推送所有分支,请使用(将REMOTE替换为远程名称,例如“origin”):
git push REMOTE '*:*'
git push REMOTE --all
推送您的所有标签:
git push REMOTE --tags
最后,我认为你可以在一个命令中完成这一切:
git push REMOTE --mirror
但是,除了 - --mirror
,也会推动你的遥控器,所以这可能不是你想要的。
在像我这样的情况下,你获得了一个回购协议,现在正在将远程起源切换到不同的回购协议,一个新的空单......
所以你有你的repo和里面的所有分支,但你仍然需要检查那些分支的git push --all
命令来实际推送这些分支。
你应该在推动之前做到这一点:
for remote in `git branch -r | grep -v master `; do git checkout --track $remote ; done
其次是
git push --all
这是另外一种对于我所处的情况更好的解决方案。它解决了您有多个远程的问题,想要将远程source
所有分支克隆到远程destination
但无需全部检查它们预先。
(我在Daniel的解决方案中遇到的问题是,如果我之前已经检查过它,它将拒绝从source
远程程序签出一个跟踪分支,也就是说,它在推送之前不会更新我的本地分支)
git push destination +refs/remotes/source/*:refs/heads/*
注意:如果您不使用直接CLI,则必须跳过星号:
git push destination +refs/remotes/source/*:refs/heads/*
这会将远程source
中的所有分支都推送到destination
的头部分支,可能会进行非快速推送。 您仍然需要单独推送标签。
上一篇: Push local Git repo to new remote including all branches and tags