结合git repos保留历史记录

时间:2013-05-08 18:24:54

标签: git git-merge

我有几个独立的Git存储库 - “核心”和几个组件。它们中的每一个都有一个像“v1.0.1”这样的标签,表明它包含在构建中。所有回购中的标签都是相同的。现在我需要将这些repos组合成单个repo保留历史记录。这样做的目的是我需要能够构建历史版本(基于标记)。 repos中的文件不会冲突(.gitignore除外)。

我在“core”上尝试git reset v1.0.1,然后在其他repos上合并相应的标记(在核心中添加为remotes)git merge comp1/master v1.0.1但它合并了来自comp1/master分支的所有提交。是否可以使用非源头的提交进行git merge?也许有另一种方法?

1 个答案:

答案 0 :(得分:1)

它会在master中合并,因为您指向comp1/master,只需将其指向要合并的标记。

这里我告诉你指向标签,虽然,我猜每个标签上的每个标签都有相同的名称 - 所以这不起作用,因为标签名称必须是唯一的。

所以,您要做的是从组件仓库fetch开始git fetch componentARemote(您可能需要选择要获取的分支)。

完成此操作后,您将合并来自git仓库中远程组件的每次提交。然后,您可以检查标记sha指向的提交v1.0.1是什么,而不是组件分支。然后,你通过指向它来合并它:

git checkout v1.0.1 # this is your core tag
git merge <sha id>
# and here you are, you merged only the relevant component tag