我在一个项目中工作,该项目有几层,每个层都是独立的子项目。
看起来像这样:
[ Project C ] [ Project D ] C and D uses B and therefore A
[ Project B ] B has all source code in a and adds more
[ Project A ]
将上游设置到父存储库并发布git pull upstream
可以很好地从上层项目中获取更改。
但是,在C语言中的错误修复方案中,如何影响与父层共享的代码,我该如何推送提交?
如果我git pull project-D
从Project A发布,它将合并在该层添加的所有源代码。
我也考虑过使用sub-trees
或submodules
,但看起来仍然很复杂。
*我也考虑过使用
sub-trees
或submodules
,但看起来仍然很复杂。*
这正是您需要使用的。让我解释一下它非常简单而不是那么复杂
Submodules
允许将外部存储库嵌入到源树的专用子目录中,该子目录始终指向特定的提交。
git submodule
像到目前为止一样,将大型项目分解为子项目。
现在,使用以下命令将每个子项目添加到您的主项目中:
git submodule add <url>
将项目添加到您的仓库后,您必须进行初始化和更新。
git submodule init
git submodule update
从Git 1.8.2--remote
开始,添加了新选项
git submodule update --remote --merge
将fetch
来自上游在每个子模块中的最新变化,merge them in
以及check out
子模块的最新版本。
如文档所述:
--remote
此选项仅对update命令有效。不要使用超级项目记录的SHA-1更新子模块,而要使用子模块的远程跟踪分支的状态。
这等效于在每个子模块中运行git pull。
但是,在C语言中的错误修复方案中,如何影响与父层共享的代码,我该如何推送提交?
同样:使用子模块会将代码放置在主项目中,作为其内容的一部分。将其本地放置在文件夹中或将其作为子模块的一部分之间的区别在于,在子模块中,内容被管理(提交)到不同的独立存储库中。
这是子模块的说明-另一个项目中的项目,其中每个项目都是独立项目。
git subtree
Git子树允许您将任何存储库作为另一个存储库的子目录插入
与submodule
代码非常相似,但主要区别在于代码的管理位置。在子模块中,内容放置在单独的存储库中,并在此处进行管理,使您也可以将其克隆到许多其他存储库中。
subtree
正在将内容作为根项目的一部分而不是在单独的项目中进行管理。
无需写下如何设置和了解如何使用它,您只需阅读这篇精彩的文章,它将对所有内容进行解释。
https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句