我可以合并两个具有相似内容的Git存储库,但不能共享任何祖先吗?

时间:2009-07-17 03:34:09

标签: git merge

我有两个代码库,Code base-1,Code Base-2。

我运行命令......

git init
git add .
git commit -m "Initial Commit"

...在两个存储库(目录)中。

code base-1和code base-2之间存在代码差异。

我不能分支他们,因为他们已经包含约0.1%的差异。文件名是相同的,但代码有一些细微的编辑。

有没有办法合并两个存储库之间的差异?

编辑:

例如,假设我有以下内容。这就是我的开始。代码库1和2之间存在细微差别。

[oldest code case] 
code-base-1/ 
code-base-1/.git  [git stuff with already created repo] 
code-base-1/file1 
code-base-1/file2 

code-base-2/ 
code-base-2/.git [git stuff with already created repo] 
code-base-2/file1 
code-base-2/file2 

理想情况下,我可以删除code-base-2,因为它更新一点。

我如何合并这些代码库,以便我最终得到一个包含合并文件的文件?

3 个答案:

答案 0 :(得分:8)

问题可能来自这两个不同的存储库(具有不同的SHA-1第一个节点),而不是一个克隆然后修改的repo。 这意味着“git fetch”可能还不够。

你可以简单地使用外部工具(在Git外部)将CB2(Code-Base-2)的内容合并到CB1中,就像问题“{{中所建议的WinMerge一样3}}”。

另一种选择是使用一些嫁接技术来完成抓取:请参阅问题“Merging in changes from outside a git repository

$ cd project1
$ git config remote.project2.url /path/to/project2
$ git config remote.project2.fetch 'refs/heads/*:refs/project2/*'
$ git fetch project

另外修改移植文件(.git/info/grafts)以将project2的提交链接到project1。

答案 1 :(得分:4)

尝试:

cd code-base-1
git fetch ../code-base-2 master:code-base-2
git merge code-base-2

答案 2 :(得分:-2)

按照您的描述创建第一个存储库。

在第二个文件夹中创建一个名为“.git”的文件,内容为:

gitdir: <path-to-first-repository>/.git

在第二个存储库中,您现在可以运行git diff,git add / commit等来合并您的更改。