我在同一个父文件夹中有两个回购协议,我想将它们合并到父文件夹中,如果可能的话,保留历史记录,不要有最小的差异。
parent/
--code1/.git
--code2/.git
我想:
parent/.git
--code1
--code2
有没有可能这样做并同时保存两个文件夹的历史记录?或者至少保存code 1文件夹的历史记录?不幸的是,在两个repos中有一些同名的分支。理想的做法是在.git中按提交日期保存两个历史记录,但我还没有找到一个简单的解决方案(一个复杂的问题是,git mv会显示提交前/后的差异,所有文件都发生了变化,但我们可以接受)。
3条答案
按热度按时间lx0bsm1f1#
你只想把两个不同的仓库(第一个和第二个)合并成一个新仓库,同时保留两个git历史记录:
创建一个新的git仓库并初始化提交:
获取并合并第一个:
获取并合并第二个:
q8l4jmvw2#
您应该能够使用
git pull
方法。执行以下操作:
这将创建合并。.接受合并(修复冲突(如果有))。.
要将分支拉入父级git repo,可以执行以下操作:
编辑:我错过了你仍然想保留
code1
和code2
文件夹的部分。当你合并这两个仓库时,这是不可能的,因为它正在做它所说的:将它们合并在一起,到父文件夹中。。之后,您必须手动将源文件移动到code1
和code2
中,并进行进一步的提交。rdlzhqv93#
我遇到了同样的问题,并看到了这篇文章。我最终解决了它的重组之前,合并每个回购
报告1 * 内容-〉报告1\报告1新名称 * 内容报告2 * 内容-〉报告2\报告2新名称 * 内容
每个都在自己的分支上,从HEAD/main中切断
然后,我将这两个回购协议作为远程对象添加到新回购协议中,并从这些分支中提取
所以结果是
新回购
..\repo1新名称..\repo2新名称
重组为每个文件添加了一个重命名提交,因此每个文件的提交历史都被保留,只是一个额外的提交用于重命名,另一个用于合并。
希望这能帮上忙