是否可以在“伞”中保留几个git存储库?

时间:2018-07-06 17:22:17

标签: git repository git-submodules git-subtree

这里是情况:

# Want this folder to be "umbrella" in order not to spawn 
# a lot of github repos later on (you can consider it 
# dotfiles-like repository with a lot of remotely pulled 
# projects where each should be occasionally updated 
# and "custom" patches applied) 
mytoolbox/
  .git/
  proj1/ 
    .git/
    ..
  proj2/
    .git/
    ..
  proj3/
    .git/
    ..
  file1
  file2
  ..

经过一番谷歌搜索后,我偶然发现了git submodulesubtrees。第一个似乎只是继续跟踪最后的提交和对远程的引用(.gitmodules下没有实际内容的链接列表)。而且-经过几次尝试-如果符合我的目的,我没有第二个想法。一般而言,可能有人会建议更好的解决方案。 坦白地说,前一阵子我为此使用了Dropbox:)

1 个答案:

答案 0 :(得分:1)

2部分答案:

  1. git子树背后的想法是什么? git subtree的目的仅仅是在父存储库中拥有其他存储库的完整副本。基本上,这只是围绕vanilla git编写的一些脚本,因此您的其他用户将不必执行子模块命令来访问子树内容,但这实际上是相同的想法。

  2. 建议更好的解决方案?在我个人看来,与子模块相比,子树是更好的选择,这是因为它缺少额外的命令,并且它提供了简单性,但是它很容易使您陷入麻烦,例如在重新定基时。

我目前正在使用git subrepo,它与subtree的基本思想完全相同,但执行得更好,并且在避免某些不利方面方面考虑得更周到。我在重新定标时会做一些额外的脚本,尽管它们会修补指向父母的指针,所以它并不是很琐碎,但这是我发现的2018年最佳选择。