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

5

我的项目使用了许多第三方库。我使用了在http://progit.org/book/ch6-7.html中描述的子树合并过程。

我希望允许其他开发者维护这些库,并定期通过以下方式合并库存储库的更新:

$ git checkout rack_branch
$ git pull

有没有一种方法可以将rack_remote和rack_branch发布到中央仓库中,以便其他开发者也可以使用它们?请注意,不要移除html标签。
2个回答

2

在你的项目文档中,应该记录每个子目录的“上游(upstream)”的前缀、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拉取,则也不会记录URL。


0

你考虑过使用子模块吗?看起来它会适合你的工作流程。


我将修改我正在导入的那些库,但我不一定想发布这些修改。子模块是否允许对外部存储库进行本地修改?还是它们只是指向外部存储库的链接? - wanderingbear

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接