Git合并两个完全不同项目的独立存储库

问题描述:

我有两个项目(A和B)。 A使用C#,而B使用Java。Git合并两个完全不同项目的独立存储库

两者都在独立的git历史。

是否有可能将这两个独立的git存储库合并为一个?

的最终结果将是一个混帐存储库包含项目的文件夹命名为A和B的文件夹命名为B.

的历史,谢谢!

+0

解决方案已经提供。链接在这里。 Tipton

谷歌搜索后,下方后回答的问题准确:

http://nuclearsquid.com/writings/subtree-merging-and-you/

子树合并和你2008年10月4日·3分钟阅读如果你使用Git的 ,你可能意识到子模块。当你想要 集成并跟踪另一个Git仓库时,它们非常有用。但有 是另外两种可供选择的选项。

第一个是简单地合并另一个存储库。这个工作正常 只要没有冲突的文件,但有机会 已经或将在未来,这使得这个选项不太 有用。

这是子树合并策略的用途。它允许您将另一个存储库(我们称之为“项目B”)合并到您自己的 中,但将其合并到其自己的子目录中。首次设置 一切需要花费一点努力,但在此之后,从其他 存储库中提取所有需要更新的内容。

下面介绍如何设置它。首先你需要添加项目B作为远程:

$ git remote add -f projectb/path/to/other/repo(-f-Flag告诉 Git在添加后立即获取提交)。

然后你准备子树合并:

$ git的合并-s我们--no提交项目B /主这告诉GIT中 准备合并提交,但实际上没有犯呢。通过指定'我们的'合并策略的 ,我们告诉Git我们希望合并的结果成为当前的HEAD,不管怎样。

接下来我们实际添加项目B到我们自己的仓库:

$的git读树前缀=供应商/项目B/-u项目B /主读树 读取其他存储库的主树进入索引, 将其存储在前缀(在本例中为 vendor/projectb /)中给出的路径下。请注意,前缀 选项的路径必须以斜杠结尾,并且在执行 此命令时必须为空。 -u-flag使读取树也用新添加的文件更新我们的工作 拷贝。

现在,所有剩下的就是提交我们的合并:

$ git的承诺-m“合并项目B为供应商/项目B /”就是这样。 未来的更新只需要从项目B与子树 并购战略上拉规定:

$ git的拉-s子树项目B掌握应该指出的是,这 策略也有一些缺点相比,使用子模块:

任何人谁克隆你的回购也将获得合并后的资源库, 它们是否想要或不制作和commiting改变使用子模块时,也给项目B 比较容易,如果从项目B有人想 合并这些更改回他们自己,它会变得复杂。 这不是不可能,但可能需要高级Git知识。无论如何,这样做也会将您的 项目历史连接到项目B,这可能不合意。

希望它有帮助。

谢谢!