如何将GIT存储库从一台服务器迁移到新服务器
我有一台服务器正在拆除。我唯一需要迁移的就是我的存储库。此服务器被列为我的一个项目的源服务器(主服务器)。移动存储库以保留历史记录的正确方法是什么。复制它。其实很简单。:)如何将GIT存储库从一台服务器迁移到新服务器,git,Git,我有一台服务器正在拆除。我唯一需要迁移的就是我的存储库。此服务器被列为我的一个项目的源服务器(主服务器)。移动存储库以保留历史记录的正确方法是什么。复制它。其实很简单。:) 在客户端,只需在客户端的本地repo中编辑.git/config,即可根据需要将远程设备指向新的URL。要添加新的repo位置 git remote add new_repo_name new_repo_url 然后将内容推送到新位置 git push new_repo_name master git push --se
在客户端,只需在客户端的本地repo中编辑.git/config,即可根据需要将远程设备指向新的URL。要添加新的repo位置
git remote add new_repo_name new_repo_url
然后将内容推送到新位置
git push new_repo_name master
git push --set-upstream origin develop
最后去掉旧的
git remote rm origin
之后,您可以按照bdonlan所说的操作,编辑.git/config文件,将新的\u repo\u名称更改为origin。如果不删除源(原始远程存储库),只需使用
git push new_repo_name master
我只是把别人说的话转载到一个简单易懂的指示列表中
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 --push origin new_repo_url
来自
如果要移植所有分支和标记,应使用以下命令:
git clone --mirror [oldUrl]
克隆包含所有分支的旧回购协议
cd the_repo
git remote add remoteName newRepoUrl
设置一个新的遥控器
git push -f --tags remoteName refs/heads/*:refs/heads/*
要在refs/heads下推送所有ref(这可能是您想要的)如果您想将#git存储库从一台服务器迁移到新服务器,您可以这样做:
git clone OLD_REPOSITORY_PATH
cd OLD_REPOSITORY_DIR
git remote add NEW_REPOSITORY_ALIAS NEW_REPOSITORY_PATH
#check out all remote branches
for remote in `git branch -r | grep -v master `; do git checkout --track $remote ; done
git push --mirror NEW_REPOSITORY_PATH
git push NEW_REPOSITORY_ALIAS --tags
旧存储库中的所有远程分支和标记都将复制到新存储库中
单独运行此命令:
git push NEW_REPOSITORY_ALIAS
将只将主分支(仅跟踪分支)复制到新存储库。我按照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/<username>/<newrepo> # 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
cd路径/to/local/repo
git remote remove origin#为了摆脱旧设置,这不在BitBucket指令中
git远程添加源ssh://git@bitbucket.org//#根据需要修改URL
git push-u origin--一次完成所有的#push(u所有)分支
git push-u origin——标记#一次性推送u所有标记
对我来说效果很好。在GitHub上看看这个食谱: 在发现git push--mirror之前,我尝试了很多方法
工作得很有魅力 请按照以下步骤操作:
- git远程添加新源
- git推送——全新的起源
- git push--标记新的原点
- git远程rm源
- git远程重命名新原点
git remote set-url origin git://new.url.here
通过这种方式,您可以保留新回购协议的名称origin
,然后将旧回购协议推送到新回购协议,如其他答案中所述。假设你独自一人工作,并且你有一个本地回购协议,你想在其中反映你所有的缺点,那么你也可以(从本地回购协议内部)
但是请参见(总之,不要使用--mirror
,只使用一次)。更新为使用git push--mirror origin
,而不是注释中建议的git push-f origin
。
这对我来说是完美的
git克隆--镜像
光盘
git远程设置url源
git推送——镜像源
但我必须指出,这将为您当前的回购创建镜像,然后将其推到新位置因此,大型回购或慢速连接可能需要一些时间您可以使用复制所有历史记录的回购
git copy http://a.com/old.git http://a.com/new.git
在其他一些答案中,这是部分完成的
git clone --mirror git@oldserver:oldproject.git
cd oldproject.git
git remote add new git@newserver:newproject.git
git push --mirror new
如果要保留从旧回购到新回购的所有提交和分支,请遵循以下说明
git clone --bare <old-repo-url>
cd <old-repo-directory>
git push --mirror <new-repo-url>
git克隆--bare
光盘
git推——镜像
如果您想从一个原点移动到另一个原点,并在本地计算机上保留当前原点的备份,您可以使用以下步骤:
git remote get-url origin
上面的命令给出了当前远程源url,这对于在最后一步中将源设置回非常有用
git remote set-url origin git@github.newlocation:folder/newrepo.git
上述命令将远程原点设置为新位置
git push new_repo_name master
git push --set-upstream origin develop
上述命令使用branchname develop将当前活动的本地分支推送到远程。当然,它保存了所有的历史,就像git一样,所有的历史也被推送
git remote set-url origin <original old origin>
git远程设置url源
上面的命令将远程源设置回当前源:您希望这样做是因为您位于现有文件夹中,并且您可能不希望将当前本地文件夹名称与要创建的新文件夹混淆,以便克隆刚才推送到的repo
希望这会有所帮助,这是上的一个变体,目前建议将git存储库从一台服务器“迁移”到另一台服务器
existing\u repo
,存储在existing\u repo
文件夹中git@newserver:newproject.git
cd existing_repo
git remote rename origin old-origin
git remote add origin git@newserver:newproject.git
git push -u origin --all
git push -u origin --tags
这种方法的好处是,您不会删除与旧服务器对应的分支。您也可以简单地克隆它。此外,您可以使用git remote rm origin,而不是直接编辑.git/config文件;git remote add origin.rming远程将丢失该配置部分下的任何配置,而不采取任何额外步骤克隆它将丢失主干以外的分支。有可能
cd existing_repo
git remote rename origin old-origin
git remote add origin git@newserver:newproject.git
git push -u origin --all
git push -u origin --tags