我有一个本地Git回购,我想把它推到一个新的远程回购(全新的回购设置在Beanstalk上,如果这很重要的话)。 我的本地回购有一些分支和标签,我想保留我的所有历史。

看起来我基本上只需要做一个git推送,但这只上传主分支。

我如何推动所有东西,以便在遥控器上获得本地回购的完整副本?


当前回答

以下是我解决[远程拒绝]时,我将本地Git回购到新的远程,包括所有分支和标签

Git克隆——镜像old-repo cd < name-repo.git > Git远程添加新的new-repo Git push new——mirror

其他回答

实现目标的主要方法是使用——all和——tags标记。忽略其中任何一个都不能实现你想要的东西。不幸的是,它们不能一起使用(不知道为什么),所以它们必须一个接一个地运行。

git push --all
git push --tags

另一个相关的选项是——prune选项,它删除远程上本地不存在的任何分支/标签。

或者,考虑——mirror选项,因为它基本上等同于——all——tags——prune。

git push --mirror

以下是我解决[远程拒绝]时,我将本地Git回购到新的远程,包括所有分支和标签

Git克隆——镜像old-repo cd < name-repo.git > Git远程添加新的new-repo Git push new——mirror

我最喜欢的(也是最简单的)方法

git clone --mirror  OLD_GIT_URL
cd  NEW_CREATED_FOLDER
git remote add NEW-REMOTE NEW_GIT_URL
git push  NEW-REMOTE --mirror 

在像我这样的情况下,你获得了一个回购,现在将远程源切换到一个不同的回购,一个新的空的…

你在里面有repo和所有分支,但你仍然需要为git push -all命令签出这些分支。

你应该在推之前这样做:

for remote in `git branch -r | grep -v master `; do git checkout --track $remote ; done

紧随其后的是

git push --all

如果目的地是空的,这是我发现的最简洁的方法。切换到一个空文件夹,然后:

# Note the period for cwd >>>>>>>>>>>>>>>>>>>>>>>> v
git clone --bare https://your-source-repo/repo.git .
git push --mirror https://your-destination-repo/repo.git

用https://..。对于文件:///your/repo等。