KyleBlog.cn 文章 标签 关于
文章 标签 关于

迁移git项目到另一个仓库(保留所有分支、标签、历史记录)

假设你有一个来自A仓库的git项目,怎么把它推送到B仓库,且不丢失分支、标签、日志?

准备工作

  1. clone老项目并cd到它的根目录。
  2. 创建新的空项目,并拷贝新项目的git地址。后面的例子里用的地址是“git@new-repo:jack/new-proj.git”。注意,新项目new-proj是一个空项目。

在本地检出所有分支

通过下面的脚本,可以快速检出所有分支:

for remote in `git branch -r | grep -v master `; do git checkout --track $remote ; done

如果你只想迁移一部分分支,就不要执行上面的脚本,而是手工检出你想迁移的那些分支,比如:

# 检出想要迁移的分支,删除不想迁移的分支
git checkout dev
git checkout test
git branch -D tmp

迁移分支、标签、历史记录

# 将本地旧项目的远程地址改为新项目地址
git remote set-url origin "git@new-repo:jack/new-proj.git"
# 推送本地所有分支到新仓库(包括历史记录)
git push --all
# 推送标签
git push --tags

本文为kyleblog.cn原创,转载请注明出处:https://www.kyleblog.cn/posts/git_migrate

发布日期:2022-09-10 联系作者