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


当前回答

您可以使用git-copy复制所有历史记录的回购。

git copy http://a.com/old.git http://a.com/new.git

其他回答

复制一遍。就是这么简单。:)

在客户端,只需在客户端的本地repo中编辑.git/config,以便根据需要将您的遥控器指向新的URL。

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

首先在本地找到你想要移动的(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 clone --bare <old-repo-url>
cd <old-repo-directory>
git push --mirror <new-repo-url>

这是这个答案的一个变体,目前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

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

如果你想把一个#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

只复制一个主分支(只跟踪分支)到新的存储库。