我有个服务器要关闭。我剩下要迁移的唯一东西是我的存储库。这个服务器被列为我的一个项目的原始(主)服务器。移动存储库以保存历史的正确方法是什么?
当前回答
我按照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
对我来说很管用。
其他回答
我只是在一个简单的指导列表中转发别人说过的话。
Move the repository: Simply login to the new server, cd to the parent directory where you now want to hold the repository, and use rsync to copy from the old server: new.server> rsync -a -v -e ssh user@old.server.com:path/to/repository.git . Make clients point to the new repository: Now on each client using the repository, just remove the pointer to the old origin, and add one to the new one. client> git remote rm origin client> git remote add origin user@new.server.com:path/to/repository.git
复制一遍。就是这么简单。:)
在客户端,只需在客户端的本地repo中编辑.git/config,以便根据需要将您的遥控器指向新的URL。
应该像这样简单:
git remote set-url origin git://new.url.here
通过这种方式,您可以保留新回购的名称来源-然后将旧的推到新回购,如其他答案中详细说明的那样。假设你独自工作,你有一个本地回购,你想镜像所有的cruft,你也可以(从你的本地回购内部)
git push origin --mirror # origin points to your new repo
但请参阅“git push——mirror”是否足以备份我的存储库?(在所有不使用——镜子但一次)。
要添加新的回购位置,
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 copy http://a.com/old.git http://a.com/new.git
仅适用于例如,一个github到github拷贝,即保留在相同的git系统。当从例如github复制到gerrit时,这是不工作的。
除此之外,它还很好用,因为它自动复制分支、标记和子模块。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的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之间的区别