将本地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/*

  • @mattalxndr
  • 这会将远程source中的所有分支都推送到destination的头部分支,可能会进行非快速推送。 您仍然需要单独推送标签。

    链接地址: http://www.djcxy.com/p/41705.html

    上一篇: Push local Git repo to new remote including all branches and tags

    下一篇: RPC Failed result 22 http code 404