Git - 如何将多个存储库与公共文件合并?

时间:2014-12-10 21:25:00

标签: git github version-control git-merge git-remote

所以我的问题是这样的:我有两个不同的存储库,我需要制作一个不同的,新的 - 包含这两个文件。然而,存储库共享一些文件(例如main.c),我想手动合并...我试图将repos与本教程合并:http://blog.caplin.com/2013/09/18/merging-two-git-repositories/,但是我只得到一个main的“副本”。 C。也许我不明白git是如何工作的(我对它很新),但我真的需要git给我两个文件,然后我可以手动更改并制作成一个新的main.c ...我希望我我已经明确了我的问题......我可以制作这些存储库的两个不同的工作副本,复制内容并制作一个新的回购......然后历史会丢失,对吗?

2 个答案:

答案 0 :(得分:0)

使用git add remote - http://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes

创建包含TWO遥控器的存储库

克隆第一个遥控器以在本地创建初始文件集 - http://git-scm.com/docs/git-clone

然后使用git pull [remote2]从其他存储库中获取文件 - http://git-scm.com/docs/git-pull

然后解决任何代码冲突。

然后,如果需要,为新的repo添加第三个遥控器并将代码推送到该处理器。

答案 1 :(得分:0)

您需要选择一个中心点。对于project_a,这将是https://path.toyourproject.com/p/project_a中的默认代码存储库。首先检查它并将其所有内容移动到子目录中:

$ git clone https://path.toyourproject.com/p/project_a
$ cd project_a
$ mkdir project_a-cli
$ git mv * project_a-cli
$ git commit -a -m "Move."

然后您就可以开始处理辅助存储库的合并了。例如,https://path.toyourproject.com/p/project.testers

第一步是将该辅助存储库拉入您的中心点

$ git remote add origin-testers https://code.google.com/p/project.testers
$ git fetch origin-testers

将其签入临时分支并将其所有内容移至子目录

$ git branch merge-testers origin-testers/master
$ mkdir project.testers-testers
$ git mv * project.testers-testers
$ git commit -a -m "Move."

将两个存储库合并为一个

$ git checkout master
$ git merge merge-testers

<强>清理

$ git branch -d merge-testers
$ git remote remove origin-testers
之后

手动解决冲突。您可能想为Git安装可视化差异工具。