最新的git submodule跟踪

我们正在将我们的(巨大)项目转移到git上,我们正在考虑使用子模块。 我们的计划是在超级项目中有三个不同的头:发布,稳定,最新。 项目负责人将负责发布和稳定的分支机构。 他们将根据需要移动子模块。

问题是“最新”的头。 我们希望超级项目“最新”头部(自动)跟踪所有子模块的主分支。 如果它能够显示所有对子模块的提交历史,那也是非常棒的。

我看过gitslave,但它不是我们想要的。 有什么建议么?


2013年3月更新

Git 1.8.2增加了跟踪分支的可能性。

git submodule ”开始学习一种新的模式,以便与远程分支的提示集成 (而不是与超级项目的gitlink中记录的提交进行集成)。

# add submodule to track master branch
git submodule add -b master [URL to Git repo];

# update your submodule
git submodule update --remote 

另请参阅Vogella关于子模块的教程。

请参阅“ 如何使现有子模块跟踪分支 ”(如果您已有子模块,则希望现在可以跟踪分支)

注意:

git submodule add -b . [URL to Git repo];
                    ^^^

请参阅git submodule手册页:

一个特殊的价值. 用于指示子模块中分支的名称应与当前存储库中当前分支的名称相同


参见提交b928922727d6691a3bdc28160f93f25712c565f6:

submodule add :如果给出 - --branch ,将其记录在.gitmodules

这允许您在添加新子模块时轻松地在.gitmodules记录submodule.<name>.branch选项。 有了这个补丁,

$ git submodule add -b <branch> <repository> [<path>]
$ git config -f .gitmodules submodule.<path>.branch <branch>

减少到

$ git submodule add -b <branch> <repository> [<path>]

这意味着未来的呼叫

$ git submodule update --remote ...

将从您用来初始化子模块的同一分支获取更新,这通常是您想要的。

签名:W. Trevor King


原始答案(2012年2月):

子模块是由父回购引用的单个提交。
由于它本身就是一个Git回购,所以可以通过该子模块中的git log访问“所有提交的历史记录”。

因此,对于父级自动跟踪子模块的给定分支的最新提交,它需要:

  • cd在子模块中
  • git fetch / pull来确保它在右分支上有最新的提交
  • 回到父回购
  • 添加并提交以记录子模块的新提交。
  • gitslave(你已经看过)似乎是最合适的,包括提交操作。

    由于需要检查到正确的子模块分支,进行更改,提交,然后进入超级项目并提交提交(或者至少记录新的位置),对子模块进行更改有点令人讨厌。子模块)。

    其他备选方案在此处详述。

    链接地址: http://www.djcxy.com/p/92375.html

    上一篇: git submodule tracking latest

    下一篇: Git diff says subproject is dirty