在我的项目中,我需要使用第三方代码,存储在几个Git存储库中。我的项目也存储在(单独的)Git存储库中。主要项目中有几个人和我一起工作,我是维护者。
在早期的项目中,我曾经手动将依赖项复制到Git工作树,添加一个指定我使用的版本的小文件。
现在这是相当不舒服的,因为我需要每天更新一个依赖项,并且经常自己贡献代码,大部分时间都伴随着对主项目的更改。
我决定尝试使用Git子模块进行管理。我尝试的越多,我就越沮丧。甚至看起来手动副本也许更好。
以下是我的一些担忧:
git checkout
现在需要git submodule update --init
)。 git archive
是最值得注意的)。git submodule
无法与--git-dir
和--work-tree
选项一起使用,并且需要将当前目录的物理更改为“工作的顶层”树”。 似乎为了简化我们的子模块工作流程(即一个操作==一个命令),我们必须在Git周围编写一个相当厚的包装器。这很难过。
请注意,不能选择离开Git或将子项目开发完全合并到主项目中。
也许我以错误的方式使用git submodules
?有没有关于工作流程的好教程?
即使您不知道正确的答案,也请说出来,但请分享我的疑虑。 : - )
答案 0 :(得分:13)
您可能需要尝试git subtree(alt link)。在我的项目中使用远程repos和clean(解析为master
历史记录)分支,我有很多运气。
答案 1 :(得分:6)
git邮件列表中最近的一个帖子包含一个如何使用单个命令获得一致的存储库状态的补丁。它在更改分支时基本上调用git子模块更新。
http://thread.gmane.org/gmane.comp.version-control.git/130155/focus=130330