我有一个本地Git回购,我想把它推到一个新的远程回购(全新的回购设置在Beanstalk上,如果这很重要的话)。 我的本地回购有一些分支和标签,我想保留我的所有历史。
看起来我基本上只需要做一个git推送,但这只上传主分支。
我如何推动所有东西,以便在遥控器上获得本地回购的完整副本?
我有一个本地Git回购,我想把它推到一个新的远程回购(全新的回购设置在Beanstalk上,如果这很重要的话)。 我的本地回购有一些分支和标签,我想保留我的所有历史。
看起来我基本上只需要做一个git推送,但这只上传主分支。
我如何推动所有东西,以便在遥控器上获得本地回购的完整副本?
当前回答
根据@Daniel的回答,我做了:
for remote in \`git branch | grep -v master\`
do
git push -u origin $remote
done
其他回答
如果目的地是空的,这是我发现的最简洁的方法。切换到一个空文件夹,然后:
# 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等。
我正处于从一个版本控制服务切换到另一个版本控制服务的过程中,需要克隆所有存储库,包括所有分支、标签和历史记录。
为了实现以上目标,我做了下面的事情:
手动签出所有分支到本地存储库(脚本签出所有如下所示), Git push origin '*:*'
.sh脚本用于检出所有分支到本地存储库:
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
git branch --track ${branch#remotes/origin/} $branch
done
要推送所有分支,可以使用以下任意一种(将REMOTE替换为远程的名称,例如“origin”):
git push REMOTE '*:*'
git push REMOTE --all
推送所有标签:
git push REMOTE --tags
最后,我认为你可以在一个命令中完成这一切:
git push REMOTE --mirror
然而,除此之外——镜子,也会推动你的遥控器,所以这可能不是你想要的。
根据@Daniel的回答,我做了:
for remote in \`git branch | grep -v master\`
do
git push -u origin $remote
done
对我来说,有效的方法是。
git push origin --all