在胆小的git中使用子模块

维森特·博利亚

我在一个项目中工作,该项目有几层,每个层都是独立的子项目。

看起来像这样:

[ 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-treessubmodules,但看起来仍然很复杂。

代码向导

*我也考虑过使用sub-treessubmodules,但看起来仍然很复杂。*

这正是您需要使用的。让我解释一下它非常简单而不是那么复杂

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Visual Studio中使用git子模块的工作流程

来自分类Dev

在Git中使用子模块发布的正确方法

来自分类Dev

如何在新存储库中使用git子模块?

来自分类Dev

Git-子模块,跟踪要使用的子模块提交

来自分类Dev

React项目无法在git子模块中使用节点模块

来自分类Dev

在Maven子模块中使用Spring @PropertySource

来自分类Dev

在Git子模块上使用Bower的好处

来自分类Dev

使用git子模块foreach与功能

来自分类Dev

Git:可以在多个项目中使用相同的子模块工作副本吗?

来自分类Dev

在VS解决方案中使用git子模块时如何解析nuget包

来自分类Dev

Git子模块混乱

来自分类Dev

更改git子模块

来自分类Dev

管理git子模块

来自分类Dev

在裸存储库中使用子模块失败

来自分类Dev

在Flask蓝图的子模块中使用路由装饰器

来自分类Dev

使用子模块创建一个git标签

来自分类Dev

使用SSH密钥而不是密码提取git子模块

来自分类Dev

如何为git子模块使用相同的协议?

来自分类Dev

使用gnu make正确构建git子模块

来自分类Dev

使用GIT子模块的TFS 2013.4构建失败

来自分类Dev

使用SSH在Azure Pipeline中签出git子模块

来自分类Dev

如何启用Azure管道使用Git签出子模块?

来自分类Dev

使用特定的提交编号添加git子模块

来自分类Dev

docker-compose不能使用git子模块

来自分类Dev

使用git子模块的多个支持库冲突

来自分类Dev

无法更新Git子模块

来自分类Dev

git子模块指定版本

来自分类Dev

如何更新git子模块

来自分类Dev

本地忽略GIT子模块