我有个服务器要关闭。我剩下要迁移的唯一东西是我的存储库。这个服务器被列为我的一个项目的原始(主)服务器。移动存储库以保存历史的正确方法是什么?


当前回答

要添加新的回购位置,

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。如果您不删除原始(原始远程存储库),您可以简单地将更改推到新的repo with

git push new_repo_name master

其他回答

如果你想从一个源移动到另一个源,并在本地机器上保留当前源的备份,可以使用以下步骤:

首先在本地找到你想要移动的(git)文件夹 在线创建新的存储库 此步骤创建一个存储库,我们可以将代码推入其中

现在在文件夹里做

git remote get-url origin

上面的命令给出了当前的远程原点url,这对于在最后一步中将原点设置回很有用

git remote set-url origin git@github.newlocation:folder/newrepo.git

上面的命令将远程原点设置为新位置

git push --set-upstream origin develop

上面的命令将当前活动的本地分支推到使用branchname develop的远程分支。当然,它会保存所有历史,因为git也会推送所有历史。

git remote set-url origin <original old origin>

上面的命令将远程原点设置回您的当前原点:您需要这样做是因为您在现有文件夹中,并且您可能不希望将当前本地文件夹名称与您将要创建的用于克隆您刚刚推入的repo的新文件夹混淆。

希望这能有所帮助,

请按以下步骤操作:

git remote add new-origin <GIT URL>
git push --all new-origin
git push --tags new-origin
git remote rm origin
git remote rename new-origin origin

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

在发现git push -mirror之前,我尝试了许多方法。

效果好极了!

应该像这样简单:

git remote set-url origin git://new.url.here

通过这种方式,您可以保留新回购的名称来源-然后将旧的推到新回购,如其他答案中详细说明的那样。假设你独自工作,你有一个本地回购,你想镜像所有的cruft,你也可以(从你的本地回购内部)

git push origin --mirror # origin points to your new repo

但请参阅“git push——mirror”是否足以备份我的存储库?(在所有不使用——镜子但一次)。

这是这个答案的一个变体,目前gitlab建议将一个git存储库从一个服务器“迁移”到另一个服务器。

让我们假设您的旧项目名为existing_repo,存储在existing_repo文件夹中。 在新服务器上创建一个回购。我们假设这个新项目的url是git@newserver:newproject.git 打开命令行界面,输入如下信息: cd existing_repo Git远程重命名原点old-origin Git远程添加源git@newserver:newproject.git Git push -u origin——all Git push -u origin——tags

这种方法的好处是不需要删除与旧服务器相对应的分支。