我有几个独立的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?也许有另一种方法?
答案 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