合并两个 Git 仓库,并保留源仓库的所有提交记录

需求:

  1. 有2个 git 仓库:repo1、repo2;
  2. 想将 repo1 中的文件移入 repo2;
  3. repo1 的提交记录要保留;

实现:

  1. 将 repo1 作为远程仓库,添加到 repo2 中,并设置别名为 other:

切换至 repo2 仓库,并执行以下命令:

git remote add other git@github.com:xxx.git
  1. 从 repo1 仓库中抓取数据到本仓库:
git fetch other
  1. 将 repo1 仓库抓取的 master 分支作为新分支 checkout 到本地,新分支名设定为 repo1
git checkout -b repo1 other/master
  1. 切换至 repo2 的 master 分支
git checkout master
  1. 将 repo1 合并入 master 分支
git merge repo1

这里会报错 fatal: refusing to merge unrelated histories,这个问题是因为两个根本不相干的 git 库, 一个是本地库,一个是远端库,然后本地要去推送到远端,远端觉得这个本地库跟自己不相干,所以告知无法合并;需要加上 --allow-unrelated-histories 把两段不相干的分支进行强行合并;

git merge repo1 --allow-unrelated-histories

大功告成~

总结:

  1. 大致思路是伪造远程的 repo1 仓库为 repo2 的一个分支,然后合并进来;
  2. 若是文件有冲突、或要建立子目录,建议在 repo1 中先解决,再进行如上操作;

原文:https://www.cnblogs.com/jackping/p/9814509.html

发表评论
* 昵称
* Email
* 网址
* 评论