Git使用子树或子模块来管理外部资源

Luk*_*ann 20 git git-submodules git-subtree

我读了很多关于git子模块应该是多么可怕,但我不确定这是否只是那些觉得有限的人的呻吟,或者是否有严重的问题(特别是关于我的用例).

我只想将不同的回购包含在我的回购中

website/
 libs/
  js/
   fs-slides [external]
   fs-dialog [external]
Run Code Online (Sandbox Code Playgroud)

并且有可能轻松更新这些回购.据我所知,从回购中只包含一个文件是不容易的,对吧?(但没关系.)

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

Von*_*onC 11

子模块非常适合您的情况,特别是因为您不介意将这些子目录包含在它们自己的子目录中.

您可以使用子模块的主要严重问题是在进行更新时更新它们,如" git子模块的工作原理 "中所述:

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

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