20

我读了很多关于 git 子模块应该有多糟糕的文章,但我不确定这是否只是那些认为它有限制的人的呻吟,或者它是否有严重的问题(尤其是关于我的用例)。

我只想像这样在我的回购中包含不同的回购

website/
 libs/
  js/
   fs-slides [external]
   fs-dialog [external]

并且必须有可能轻松更新这些存储库。据我了解,从回购中只包含一个文件并不容易,对吧?(但没关系。)

我应该为此使用子模块吗?
或者它有什么问题吗?还是子树更容易?

4

1 回答 1

11

子模块非常适合您的情况,尤其是因为您不介意将这些子存储库包含在它们自己的子目录中。

使用子模块可能遇到的主要严重问题是在进行更新时更新它们,如“ git submodule 究竟是如何工作的”中所述:

如果您在子模块中进行提交时忘记设置分支,则所述提交将在分离的 HEAD 上进行,并且正在进行的更改将在下一次丢失(如果为您的子模块 repo 激活,您git submodule update可以通过reflog)。

然后,正如迈克尔 评论和我在上面的链接中详述的那样,您需要在提交之前将子模块推送到它自己的上游并推送父仓库(以避免推送取消发布子模块提交)

于 2012-10-01T07:31:57.947 回答