最新的git子模块跟踪

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

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

我曾经看过gitslave,但这不是我们想要的。 有什么build议么?

2013年3月更新

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

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

 # 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 ,logging在.gitmodules

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

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

减less到

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

这意味着未来呼叫

 $ git submodule update --remote ... 

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

签名:W. Trevor King


原文答案(2012年2月):

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

因此,为了让父母能够自动跟踪子模块给定分支的最新提交,需要:

  • cd在子模块中
  • git fetch / pull来确保在右分支上有最新的提交
  • 回到父母回购
  • 添加和提交以logging新的提交如果子模块。

gitslave (你已经看过)似乎是最合适的, 包括提交操作 。

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

其他的select在这里详述 。

  • 如何停止在Git中跟踪远程分支?
  • 如何configurationgit忽略本地的一些文件?
  • git的diff文件对最后的变化
  • git checkout –track origin / branch和git checkout -b branch origin / branch之间的区别
  • Git vs Team Foundation Server
  • git解压到gerrit上的错误
  • 恢复多个git提交
  • 如何禁用Windows的Git Credential Manager?
  • git rebase没有改变提交时间戳
  • 在Git中,我如何区分我的分支的第一个提交?
  • 运行git拉过所有的子目录