使用Git子树合并多个站点

使用Git子树合并多个站点,git,Git,我的项目使用了许多第三方库。我使用中描述的子树合并过程。 我希望允许其他开发人员通过以下操作维护库并定期合并库repo中的更新: $ git checkout rack_branch $ git pull 是否有办法发布rack_remote和rack_branch,使其成为中央存储库的一部分,以允许其他开发人员也使用它们?您是否考虑过使用它们?看起来它适合您的工作流程。您可能应该在项目文档的某些部分中记录每个子树的“上游”的前缀、URL和分支 下面的示例显示,此信息通常会记录在子树合并提交消

我的项目使用了许多第三方库。我使用中描述的子树合并过程。 我希望允许其他开发人员通过以下操作维护库并定期合并库repo中的更新:

$ git checkout rack_branch
$ git pull

是否有办法发布rack_remote和rack_branch,使其成为中央存储库的一部分,以允许其他开发人员也使用它们?

您是否考虑过使用它们?看起来它适合您的工作流程。

您可能应该在项目文档的某些部分中记录每个子树的“上游”的前缀、URL和分支

下面的示例显示,此信息通常会记录在子树合并提交消息中,但这取决于合并和/或拉取的确切方式


考虑使用以下命令创建初始子树合并:

git merge --no-commit sub/master
git read-tree -u --prefix=sub sub/master
git commit
提交消息将如下所示:

Merge remote-tracking branch 'sub/master'
我们可以看到遥控器名为
sub
,分支名为
master
,但我们看不到URL。您可以在最后一步执行手动提交时将URL添加到消息中

稍后,您可以使用
git pull
合并新的“上游”更改:

git pull -Xsubtree=sub sub master
默认提交消息将包括存储库URL和分支名称:

Merge branch 'master' of server:path/to/repository

另一方面,初始合并和后续合并中直接引用提交对象而不是使用分支名称的变体(例如,
15dbbda
而不是
sub/master
)将阻止记录分支名称;如果有人决定从
中提取,则不记录URL也是如此。remotes/sub/master
而不是
sub-master

我将修改我要导入的库,我不一定要发布这些修改。子模块是否允许对外部存储库进行本地修改?或者它们只是指向外部存储库的链接?