如何将A项目的某一分支迁移到B项目上

在A项目的基础中克隆了一个B项目出来独立管理。由于项目管理原因,当前B项目仅复制已上线的内容。当前A项目中仍有开发中的分支。如何将A项目上的某一个分支可以完美复制到B项目中,可以继续在B项目进行开发呢?除了CV大法以为还有其他方法介绍吗?求各位指导指导……

当前我们使用的是git来管理代码

阅读 8.6k
4 个回答

本质上,添加一个新的远程库即可。

git remote add newLibName libUrl
// 查看是否添加成功,是否有对应的newLibName
git remote -v

// 拉取新远程库的分支信息到本地
git fetch newLibName

// 直接切换分支
git checkout newLibName/branchName

如果遇到极端情况,当前分支和要切换的分支差距太大,git不允许切换,可以新建一个空白分支中转一下。

git remote add newLibName libUrl
// 查看是否添加成功,是否有对应的newLibName
git remote -v

// 拉取新远程库的分支信息到本地
git fetch newLibName

// 新建空白分支
git checkout  --orphan emptyBranchName // 创建无提交的空白分支,但是有索引。 
git rm --cached -r . // 删除索引。 
git clean -f -d //删除尚未加入索引的文件。

// 再切换
git checkout newLibName/branchName

在A项目的那个分支里,push代码到B项目的指定分支。

  1. 如果 B 项目是从 A 项目开分支出来的,那么 B 和 A 往前追溯应该可以找到共同的起源
  2. 这样的话,最简单的办法是在 A 上维护一个 B 分支,所有希望在 B 项目中用到的代码都放过去
  3. 如果只是需要特定几个分支,那么可以使用 cherry-pick 从 A 里取,但是可能会遇到一些问题

参考自楼上的@米花儿团儿 提供的方法,再结合自己的项目需求走了一波,实现了自己想要的效果,贴一下自己的实现过程:

1.先把Y分支推送到A项目的远程中

2.打开B项目执行:git remote -v
看到的是仓库较为详细的信息,包括名字,url,每个仓库

3.添加远程仓库进来:git remote add A A-url 
这时A是自己命名的仓库名称,A-url 是仓库A的远程地址,HTTP地址或SSH地址都可以。 这时再查看远程仓库,发现已经有A了

4.执行git fetch A 拉取新远程库的分支信息到本地

5.执行 git checkout A/branchname 切换分支

6.执行成功后新建分支git checkout -b 分支名称

7.新拉的分支想合并master分支时会出现:由于不同仓库,所以无法直接拉取的报错。执行以下git merge master --allow-unrelated-histories 即可

由于自己git的使用火候不够,操作过程还出现了由于仓库的关联,导致推送的时候推送错A项目了。解决过程比较生硬:执行了git remote remove A ,把关联的A项目取消管理,然后重新推送分支到B项目

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进