Git将两个项目合并成一个,并保留commit记录
2019-04-29 本文已影响0人
R_X
需求:将两个开发已久的项目合并到一个空项目里,两个项目保留单独的目录及所有
commit
记录;但是合并以后的git 管理统一用合并的空项目来管理。
一、项目
- all:想要合并到空项目
- all-1:已存在的项目
- all-2:已存在的项目
二、目标项目结构:

三、步骤
1、分别将 all-1
,all-2
两个项目拉取一个非master
分支,并push
到远程,用于合并;
2、新建空目录all
,然后完成一系列的 Github 初始化项目的操作,不赘述;
以下为关键点:
我们知道,git 的配置信息在 项目根目录 下的
.git/config
中

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

4、执行
git pull
将all-1
项目的 分支信息拉到all
项目本地(这里由于操作all-1
时,将控制台清空了,所以用all-2
来代替)
5、执行 git checkout
双击 tab
会发现刚才all-2
的分支

6、切换到这个分支
git checkout dev-all-2
,你会发现 .git/config文件中多了一个分支记录
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

8、推送代码
$ git push origin master
9、重复 3-8
步,完成 all-2
项目的操作,最后效果:


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