我有个服务器要关闭。我剩下要迁移的唯一东西是我的存储库。这个服务器被列为我的一个项目的原始(主)服务器。移动存储库以保存历史的正确方法是什么?
当前回答
这在其他答案中也有部分体现。
git clone --mirror git@oldserver:oldproject.git
cd oldproject.git
git remote add new git@newserver:newproject.git
git push --mirror new
其他回答
如果你想从一个源移动到另一个源,并在本地机器上保留当前源的备份,可以使用以下步骤:
首先在本地找到你想要移动的(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仓库从一个服务器迁移到一个新的服务器,你可以这样做:
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
只复制一个主分支(只跟踪分支)到新的存储库。
复制一遍。就是这么简单。:)
在客户端,只需在客户端的本地repo中编辑.git/config,以便根据需要将您的遥控器指向新的URL。
要添加新的回购位置,
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 clone --mirror [oldUrl]
用所有分支克隆旧的回购
cd the_repo
git remote add remoteName newRepoUrl
设置一个新的遥控器
git push -f --tags remoteName refs/heads/*:refs/heads/*
将所有的refs放在refs/heads下(这可能是你想要的)
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别