Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将GIT存储库从一台服务器迁移到新服务器_Git - Fatal编程技术网

如何将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)文件夹
  • 在线创建新的存储库 这一步创建了一个存储库,我们可以将代码推送到其中
  • 现在在文件夹中做什么

    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
    文件夹中

  • 在新服务器上创建repo。我们假设新项目的url是
    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