美文网首页
Git将两个项目合并成一个,并保留commit记录

Git将两个项目合并成一个,并保留commit记录

作者: R_X | 来源:发表于2019-04-29 14:16 被阅读0次

需求:将两个开发已久的项目合并到一个空项目里,两个项目保留单独的目录及所有commit记录;但是合并以后的git 管理统一用合并的空项目来管理。

一、项目

  • all:想要合并到空项目
  • all-1:已存在的项目
  • all-2:已存在的项目

二、目标项目结构:

最终目标结构

三、步骤

1、分别将 all-1all-2两个项目拉取一个master分支,并push到远程,用于合并;
2、新建空目录all,然后完成一系列的 Github 初始化项目的操作,不赘述;

以下为关键点:

我们知道,git 的配置信息在 项目根目录 下的.git/config

.git/config

3、将all项目的git origin url 改成 项目 all-1 的;

修改 git origin url
4、执行 git pullall-1项目的 分支信息拉到all 项目本地(这里由于操作all-1时,将控制台清空了,所以用all-2来代替)

5、执行 git checkout双击 tab会发现刚才all-2的分支

image.png
6、切换到这个分支git checkout dev-all-2,你会发现 .git/config文件中多了一个分支记录
新增的 dev-all-2 分支
7、切换回 master分支,并merge dev-all-2,然后将 git origin url 改回all自己的。
$ git checkout master
$ git merge dev-all-2 --allow-unrelated-histories  

注意:这里要加上 --allow-unrelated-histories, 否则会报错:fatal: refusing to merge unrelated histories

将 `git origin url` 改回`all`自己的

8、推送代码

$ git push origin master 

9、重复 3-8步,完成 all-2项目的操作,最后效果:

项目结构 git commit 信息

四、最终目标

此时项目的目录结构不满足我们的要求(每个项目保留原来独立的目录)
1、将已经同步到all 目录下的所有文件全部删除;
2、分别将 all-1 all-2 项目下的 .git目录删掉;
3、移动 all-1 all-2all目录里

$ mv all-1 all-2 all

4、完成


最终目录结构

相关文章

网友评论

      本文标题:Git将两个项目合并成一个,并保留commit记录

      本文链接:https://www.haomeiwen.com/subject/bqeynqtx.html