使用Git子树从多个站点合并

时间:2011-05-29 11:42:25

标签: git

我的项目使用了许多第三方库。我使用http://progit.org/book/ch6-7.html中描述的子树合并过程。 我想允许其他开发人员通过执行以下操作来维护库并定期合并来自库repos的更新:

$ git checkout rack_branch
$ git pull

有没有办法发布rack_remote和rack_branch,所以他们将成为中央存储库的一部分,以便其他开发人员也可以使用它们?

2 个答案:

答案 0 :(得分:2)

您应该在项目文档的某些位置记录每个子树的“上游”的前缀,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)的初始合并和后续合并的变体将阻止分支名称被记录;如果某人决定从. remotes/sub/master而不是sub master取消,则不会记录该网址。

答案 1 :(得分:0)

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

相关问题