当前位置:  开发笔记 > 编程语言 > 正文

如何将GIT存储库从一台服务器迁移到一台新服务器

如何解决《如何将GIT存储库从一台服务器迁移到一台新服务器》经验,为你挑选了9个好方法。

我有一台服务器,我正在取消.我唯一要迁移的是我的存储库.此服务器被列为我的一个项目的源(主).移动存储库以保留历史记录的正确方法是什么.



1> Koby..:

要添加新的仓库位置,

git remote add new_repo_name new_repo_url

然后将内容推送到新位置

git push new_repo_name master

最后删除旧的

git remote rm origin

之后,您可以执行bdonlan所说的内容并编辑.git/config文件以将new_repo_name更改为origin.如果不删除原点(原始远程存储库),则只需将更改推送到新的存储库即可

git push new_repo_name master


您应该能够通过`git push -u new_repo_name --all`立即推送所有分支.
迁移所有分支的解决方案是什么?
这个命令不是编辑git-config文件,而是为我工作:`git remote rename new_repo_name origin`
可以在http://stackoverflow.com/a/18336145/923599找到所有分支的迁移
这只会将旧存储库中的单个分支复制到新存储库吗?
这个答案有误导性.问题并没有说明他们只想要掌握.用户可能会产生错误的印象,即如果不这样做,这确实会移动整个回购.
这是肯定的,但是既然你只是在改变遥控器,你可以将每个分支推到新的遥控器上.

2> jzwiener..:

如果要迁移所有分支和标记,则应使用以下命令:

git clone --mirror [oldUrl]

用所有分支克隆旧的仓库

cd the_repo
git remote add remoteName newRepoUrl

设置一个新的遥控器

git push -f --tags remoteName refs/heads/*:refs/heads/*

在refs/heads下推送所有引用(这可能是你想要的)


我最后使用`git push -f --tags remoteName refs/heads/*:refs/heads/*`在我的新远程存储库上的所有分支前缀`refs/heads/refs/heads`,所以我换成了` git push remoteName --mirror`
"git push remoteName --mirror"完美无瑕!
Git抱怨说`--tags`和`refs/heads/*:refs/heads/*`与`--mirror`不兼容.http://stackoverflow.com/a/26552740/1484831效果很好.
我用过这个,它对我有用.可能应该是当选的答案.请注意,您在本地获取的"代码"似乎对元数据很重要,这使得新手如果出现问题则不清楚.
这应该是批准的答案.比其他解决方案好多了

3> Roberto..:

这对我来说完美无缺.

git clone --mirror 
cd 
git remote set-url origin 
git push -f origin

我必须提一下,这会创建一个当前仓库的镜像,然后将其推送到新位置.因此,这可能需要一些时间来进行大型回购或慢速连接.


***这个***
首选`git push --mirror origin` over`-f`.
这个锅好极了。不会混淆多个遥控器

4> bdonlan..:

复制它.这真的很简单.:)

在客户端,只需在客户端的本地存储库中编辑.git/config,根据需要将远程控制器指向新的URL.


您也可以简单地克隆它.另外,不是直接编辑.git/config文件,而是可以使用git remote rm origin; git remote add origin .
使远程设备丢失将丢失配置的该部分下的任何配置 - 并且在不采取任何额外步骤的情况下克隆它将丢失除trunk之外的分支.有可能处理这些问题,但是,真的 - 只是rsync它.
这也保留了例如钩子和其他配置,所以我更喜欢它纯粹的git解决方案

5> Ian Walters..:

在某些其他答案中,这部分是完成的.

git clone --mirror git@oldserver:oldproject.git
cd oldproject.git
git remote add new git@newserver:newproject.git
git push --mirror new


事实上,这是最完整,直截了当的答案.
推送中的`--mirror`非常重要:这应该是正确的答案

6> Juan A. Nava..:

我只是按照简单的说明列表重新发布其他人所说的内容.

    移动存储库:只需登录到新服务器,cd到现在要保存存储库的父目录,然后使用rsync从旧服务器复制:

    new.server> rsync -a -v -e ssh user@old.server.com:path/to/repository.git .
    

    让客户端指向新的存储库:现在在使用存储库的每个客户端上,只需删除指向旧源的指针,然后将其添加到新存储库中.

    client> git remote rm origin
    client> git remote add origin user@new.server.com:path/to/repository.git
    


比删除和添加更好:`git remote set-url origin user@new.server.com:path/to/repository.git`

7> John Smith..:

在GitHub上查看这个食谱:https: //help.github.com/articles/importing-an-external-git-repository

在发现之前我尝试了很多方法git push --mirror.

像魅力一样工作!



8> Laryx Decidu..:

我按照BitBucket上的说明移动了一个包含所有分支的仓库.以下是#角色后面的解释步骤:

cd path/to/local/repo
git remote remove origin # to get rid of the old setting, this was not in the BitBucket instructions
git remote add origin ssh://git@bitbucket.org// # modify URL as needed
git push -u origin --all # pushes _ALL_ branches in one go
git push -u origin --tags # pushes _ALL_ tags in one go

为我工作得很好.



9> 小智..:

请按照以下步骤操作:

git remote add new-origin

git push - all new-origin

git push --tags new-origin

git remote rm origin

git remote重命名新起源

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有