l.t*_*e.a 130 git git-submodules git-track
我们正在将我们(巨大的)项目转移到git,我们正在考虑使用子模块.我们的计划是在超级项目中有三个不同的头:发布,稳定,最新.项目负责人将处理释放和稳定的分支机构.他们将根据需要移动子模块.
问题是"最新"头.我们希望超级项目"最新"头部跟踪所有子模块的主分支(自动).如果能够显示子模块的所有提交历史,那也很棒.
我看过gitslave,但它不是我们想要的.有什么建议?
Von*_*onC 220
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
Run Code Online (Sandbox Code Playgroud)
如果您已经存在子模块,您现在希望跟踪分支,请参阅" 如何使现有子模块跟踪分支 ".
另请参阅Vogella关于子模块的教程,了解有关子模块的一般信息.
注意:
git submodule add -b . [URL to Git repo];
^^^
Run Code Online (Sandbox Code Playgroud)
特殊值
.用于指示子模块中分支的名称应与当前存储库中当前分支的名称相同.
请参阅提交b928922727d6691a3bdc28160f93f25712c565f6:
submodule add:如果--branch给出,请记录下来.gitmodules这使您
submodule.<name>.branch可以在.gitmodules添加新子模块时轻松记录选项.有了这个补丁,
$ git submodule add -b <branch> <repository> [<path>]
$ git config -f .gitmodules submodule.<path>.branch <branch>
Run Code Online (Sandbox Code Playgroud)
减少到
$ git submodule add -b <branch> <repository> [<path>]
Run Code Online (Sandbox Code Playgroud)
这意味着未来的呼叫
$ git submodule update --remote ...
Run Code Online (Sandbox Code Playgroud)
将从您用于初始化子模块的同一分支获取更新,这通常是您想要的.
签名:W.Trevor King
原始答案(2012年2月):
子模块是父repo引用的单个提交.
由于它本身就是一个Git仓库,因此可以通过git log该子模块访问"所有提交的历史记录" .
因此,如果父级自动跟踪子模块的给定分支的最新提交,则需要:
gitslave(你已经看过)似乎是最合适的,包括提交操作.
由于需要签出正确的子模块分支,进行更改,提交,然后进入超级项目并提交提交(或至少记录新的位置),对子模块进行更改有点烦人.子模块).
其他替代方案在此详述.
| 归档时间: |
|
| 查看次数: |
80459 次 |
| 最近记录: |