Git - 如何将多个存储库与通用文件合并



所以我的问题是这样的:我有 2 个不同的存储库,我需要创建一个不同的新存储库 - 包含这两个文件。但是,存储库共享一些文件(例如main.c),我想手动合并这些文件...我尝试将存储库与本教程合并:http://blog.caplin.com/2013/09/18/merging-two-git-repositories/,但是我只得到了 main.c 的一个"副本"。也许我不明白 git 是如何工作的(我对它很陌生),但我真的需要 git 给我两个文件,然后我可以手动更改并制作成一个新的 main.c...我希望我已经弄清楚了我的问题......我可以制作这些存储库的两个不同的工作副本,复制内容并制作一个新的存储库......但那样历史就会消失,对吧?

使用 git add remote - http://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes 创建具有两个远程的存储库

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

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

然后解决任何代码冲突。

然后,如果需要,为新存储库添加第三个远程并将代码推送到该存储库。

您需要选择一个中心点。对于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 安装一个视觉差异工具。

最新更新