【发布时间】:2012-02-22 12:34:03
【问题描述】:
我对 Git 很陌生:我来自 SVN,在那里我发现 :external 功能非常强大。在 Git 中我没有找到类似的东西:
- 子模块非常适合添加并非总是需要的项目模块。它们必须在 repo 克隆后初始化,并且不能只包含原始项目的子目录。
- 子树非常适合添加库(它们还允许包含子目录),但推动它们真的很痛苦。
所以场景是这样的:我有一个项目,我想在其中包含一些库。我希望有可能更改所有这些库并将它们推送到自己的存储库中。此外,其中一些库是较大项目的子目录(例如,如果项目还包含演示或自述文件,我不会在我的项目中包含这些目录)。
我该怎么做?
我试过了:
- http://progit.org/book/ch6-7.html + http://posterous.timocracy.com/git-sub-tree-merging-back-to-the-subtree-for(不允许只合并一个子目录,否则我看不到);
- http://www.tipstank.com/2011/02/21/git-subtree-notes-and-workflows/(同上,不处理子目录包含);
- http://psionides.eu/2010/02/04/sharing-code-between-projects-with-git-subtree/(看不到推送);
- http://h2ik.co/2011/03/having-fun-with-git-subtree/(看不到推送)
好吧,如果您已经达到了这一点,感谢您的耐心等待,现在我想尝试其他方法,因为现在我的结论是:“Git 中不允许子树推送”ç_ç
【问题讨论】:
-
stackoverflow.com/questions/3131912/…: git submodules 和 external 确实不同。但是您可以更改子模块内容并推送到它的仓库:stackoverflow.com/questions/1979167/git-submodule-update/…。基本上,我的回答与stackoverflow.com/questions/9394286/… 相同
-
好的,谢谢...但是(如果我错了,请纠正我)子模块我不能只“包含”一个特定的子模块目录?我的意思是:我的子模块有两个目录:Demos 和 Source,我想在我的父项目中包含 only Source 内容...希望可以理解...
-
正确:子模块是它自己的 git repo:你应该检查所有内容。虽然稀疏结帐是可能的 (stackoverflow.com/a/2467629/6309),但不建议这样做。使用符号链接仅链接您想看到的内容会更好。
-
完美...最后一个“菜鸟”问题:对于“仅使用符号链接来链接...”,您的意思是我在另一个项目中签出我的“子模块”,然后对其进行符号链接?但在这种情况下,git 会认为我正在提交与不同项目无关的“单个文件”,对吧?或者有没有办法说“嘿,他们属于另一个项目!”
-
我已经做出了回答,以说明我提出的解决方案并解决您的最后评论。
标签: git git-subtree