将存储库合并到另一个存储库的文件夹中

时间:2020-10-12 13:56:56

标签: git merge repository

我想将一个存储库合并到另一个存储库的文件夹中。

当前,它看起来像这样:

我有多个存储库,例如A,B,C ..

-> A 
   .git
-> B
   .git
-> C
   .git

然后我只有一个存储库,例如R,它包含文件夹A,B,C(不是git存储库,而只有包含与以前的A,B,C git存储库几乎相同的东西的文件夹):< / p>

-> R
   .git
   A
   B
   C

我想将A存储库与R存储库中的A文件夹合并,将B存储库与R存储库中的B文件夹合并,等等。

什么是最佳解决方案?

1 个答案:

答案 0 :(得分:1)

git存储库中分支的tree的结构确定了合并结果。我不相信您可以说“从此远程主机合并此分支,但将其合并到此文件夹中”,因为这将需要git重新解释所有tree对象。

我不确定您可以使用仓库A,B和C来做什么,但是如果我将仓库A重组为具有一个模仿“ R”的“ A”文件夹,我可以例如将git merge repoA/master --merge-unrelated-histories添加为远程对象后的repoA

zrrbite@ZRRBITE MINGW64 /d/dev/git/repotest (master)
$ git fetch repoA
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 2 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (2/2), done.
From D:/dev/git/repotest_A
   b73c55c..0b2748b  master     -> repoA/master

zrrbite@ZRRBITE MINGW64 /d/dev/git/repotest (master)
$ git merge repoA/master --allow-unrelated-histories
Merge made by the 'recursive' strategy.
 A/file_from_A.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 A/file_from_A.txt

zrrbite@ZRRBITE MINGW64 /d/dev/git/repotest/A (master)
$ ls
file_from_folder_A.txt  file_from_repo_A.txt

如果我有相同名称的文件,例如file_from_folder_A.txt,然后我将简单地解决合并冲突:

zrrbite@ZRRBITE MINGW64 /d/dev/git/repotest (master)             
$ git merge repoA/master --allow-unrelated-histories             
CONFLICT (add/add): Merge conflict in A/file_from_folder_A.txt               
Auto-merging A/file_from_folder_A.txt                                        
Recorded preimage for 'A/file_from_folder_A.txt'                             
Automatic merge failed; fix conflicts and then commit the result.
                                                             
zrrbite@ZRRBITE MINGW64 /d/dev/git/repotest (master|MERGING)
...