如何在父文件夹中将两个git repo合并成一个repo?

webghufk  于 2023-02-07  发布在  Git
关注(0)|答案(3)|浏览(173)

我在同一个父文件夹中有两个回购协议,我想将它们合并到父文件夹中,如果可能的话,保留历史记录,不要有最小的差异。

parent/
--code1/.git
--code2/.git

我想:

parent/.git
--code1
--code2

有没有可能这样做并同时保存两个文件夹的历史记录?或者至少保存code 1文件夹的历史记录?不幸的是,在两个repos中有一些同名的分支。理想的做法是在.git中按提交日期保存两个历史记录,但我还没有找到一个简单的解决方案(一个复杂的问题是,git mv会显示提交前/后的差异,所有文件都发生了变化,但我们可以接受)。

lx0bsm1f

lx0bsm1f1#

你只想把两个不同的仓库(第一个和第二个)合并成一个新仓库,同时保留两个git历史记录:
创建一个新的git仓库并初始化提交:

mkdir newRepository
git init
touch .gitignore
git add .gitignore
git commit .gitignore -m 'init'

获取并合并第一个:

git remote add first pathTo/first
git fetch first
git merge first/master

获取并合并第二个:

git remote add second pathTo/second
git fetch second
git merge second/master
q8l4jmvw

q8l4jmvw2#

您应该能够使用git pull方法。
执行以下操作:

$ git init
$ git pull code1
$ git pull code2

这将创建合并。.接受合并(修复冲突(如果有))。.
要将分支拉入父级git repo,可以执行以下操作:

$ git checkout -b branchName
$ git pull code1 branchName

编辑:我错过了你仍然想保留code1code2文件夹的部分。当你合并这两个仓库时,这是不可能的,因为它正在做它所说的:将它们合并在一起,到父文件夹中。。之后,您必须手动将源文件移动到code1code2中,并进行进一步的提交。

rdlzhqv9

rdlzhqv93#

我遇到了同样的问题,并看到了这篇文章。我最终解决了它的重组之前,合并每个回购
报告1 * 内容-〉报告1\报告1新名称 * 内容报告2 * 内容-〉报告2\报告2新名称 * 内容
每个都在自己的分支上,从HEAD/main中切断
然后,我将这两个回购协议作为远程对象添加到新回购协议中,并从这些分支中提取
所以结果是
新回购
..\repo1新名称..\repo2新名称
重组为每个文件添加了一个重命名提交,因此每个文件的提交历史都被保留,只是一个额外的提交用于重命名,另一个用于合并。
希望这能帮上忙

相关问题