因为该公司的项目要分解为多个模块,并且一些模块已开发为分支机构的小型合作伙伴开发权限,因此他们最终决定使用GIT子模块来拆分项目。有趣的学生可以参考来源。代码一起阅读。
文章指南
首先
子模块允许您使用git仓库作为另一个git仓库的子目录。它允许您将另一个仓库克隆到自己的项目中并维护提交的独立性。
官员中引用了一个示例:某个工作中的项目需要包括和使用另一个项目。也许它是第三张库,或者您是为多个父项目库独立开发的。现在是:您想对待它们作为两个独立项目,同时想在一个项目中使用另一个项目。git通过提交解决此问题
当时我们遇到的场景相似,并且涉及代码权限的问题,因此使用子模块是一个很好的解决方案。
您可以将子模块添加到主模块中。这些提交可以理解为独立于主模块的两个git。仅通过使用git subodules添加,另一个git
格式:git子模块添加
检查子模块
由于项目中的多个子模块,我们可能会在开发过程中遇到某个分支机构的所有子模块,以解决某些问题。目前,将分支切换到指定的文件夹一一或执行其他操作。GIT提供批处理操作来解决此问题
命令格式:git subpodule foreach
克隆子模块项目有两种方法:一个是第一个克隆父项目,然后更新子模块;另一个是直接递归整个克隆项目。
当对子模块关联进行翻新时,会有以下步骤:
然后,我们可以看到主模块中有一个附加文件。路径是我们项目中项目的文件夹,作为我们项目中的子模块,URL是儿童模块git的地址。
您也可以指定子模块的分支
之后,每次更新子模块时,主模块都会发现终端更改以下提示提交(哈希更改)将具有两种状态:和谐,两种情况发生在和谐中
gitstatus
在提交代码之前,您可以在主模块中查看状态(GIT状态),以确保它是您自己的修改,并且状态是正确的。
如果您发现未提交子模块的信息,请检查是否是您自己的修改:
如果您都修改了自己的修改,这需要直接提交
如果不同步远程端的最新代码(包括子模块),则直接位于主模块下方并敲击以下命令
在同步遥控端的最新代码后,在正常情况下,您会发现只剩下自己的提交;如果您发现对别人的代码进行了修改,应该是先前的开发人员尚未采取步骤,您可以帮助他一起提及它
流行科学:在子模块与主模块关联之后,子模块的根目录中的.git文件夹将变成,该文件指定GIT的地址
然后在主模块的.git文件夹下,将添加模块文件夹,其中包含相应的顺式模块的配置
当然,每当子模块的主要模块都会收到提示时,有时会非常易碎。当开发多个人时,可能会出现该种子模块的冲突。此git也有一个解决方案。
您可以将所有主要模块的关联直接添加到子模块中
忽略有三个值:
由于使用子模块,因此每次都会添加子模块,并且每次都不能在主模块中更新路由,因此,要增加每个子模块菜单的主模块绝对不合适,因此有必要使自动路由自动化。注册,我们需要设置一个规则
定义模块文件夹下方的路由,命名xxxxrouter.js的最终决定,并导出一个数组。最后,注册注册将在主项目中统一引入。
自动注册路由是在WebPack中向API注册。如果您不知道,您可以在我的文章WebPack扩展中看到另一篇文章
最后,引言的引言添加到路由的主文件中
Vuex进行了统一的注册引入。写作方法与我们构建的模块的文件夹相同。
统一注册的规则是最终生成一个对象。关键是文件夹文件,值为值的内容是如此可用
在上述转换之后,基本上将项目分开,然后可以通过相应的代码开发GIT仓库中相应开发人员的相应子模块代码权限
子模块与彼此无关,并且与主模块的连接也取决于主模块。我们也已转变为自动注册,因此没有其他问题。
通常,我们只需要在子模块中开发即可。通常,主模块不需要移动,但是项目的默认开放位于主模块下。GIT提交是主模块的信息
有一些坑需要将目录切成相应提交的根目录。切割到相应的开发分支,使子模块修改并提交子模块,然后将MR提高到相应的分支。主项目已修改。
建立詹金斯后,您需要添加一些命令,以确保代码是最新的
如果我们需要在开发时确保最新代码,则可以先执行这三个命令,但是每次敲击这三个命令是很麻烦的。
当然,我们还可以将分支用作参数来配置别名
当您使用它时,只需要输入,就可以递归恢复代码主代码
从那时起,我们已经完全改变,然后根据法规正常发展
当代码审查时,我发现朋友的代码样式不同。从理论上讲,有githooks可以控制提交代码时的棉绒执行,并且根据配置会自动格式化代码。
显然,Eslint +漂亮的漂亮是无效的,认为认为子模块也是一个git,而Githooks执行
当然,有先决条件,您需要注册git的挂钩。然后我们需要为子模块注册钩子
@vue/cli-service默认值为没有棉命令,仅和三个默认命令,all asteral astermand使用registerCommand登录
@vue/cli-service
如果您想提交代码并与主模块保持一致,我们必须使用@vue/cli-service lint,但是主模块具有它。当时我也想知道。因此,我查看了源代码,发现当必须有ESLINT时,他将拥有Eslint。
末端sub -module package.json代码如下
然后,我们注册用于转换主模块作为子模块的git挂钩
Git Hooks的实现实际上非常简单,也就是说,在.git/Hooks文件下,保存了一些Shell脚本,并且这些脚本在相应的钩子中执行。例如,在下图中,这是一个仓库,是一个仓库尚未配置使用git钩。会有许多文件以.Sample为单位结束。这些都是示例文件
githooks
我们的项目已经注册了githooks,没有示例注册。打开pre-commit.sample文件以查看内容。这意味着这是一个例子,并进行了一些格式检测。此脚本默认为默认值即将生效,如果要生效,请将文件名更改为预先命令,也就是说,您可以将其删除。
预订单
在执行git commit命令之前,触发此钩子
pre-pre-applypatchgit am
执行之前,请申请添加
执行后ApplyPatchGit AM不会影响GIT AM的结果。可以使用前签名提交来绕过commit-msggit commit的commit-msggit commit,您可以使用git Commits-no-velifify。执行后,git commit的结果,pre-merge-merge-commitgit合并,您可以使用git合并 - 毫无验证以绕过准备委员会gggit commit。在打开编辑器之前,编辑器打开
rebasegit rebase执行
执行后Checkoutgit Checkout或Git Switch不使用No-No-Checkout,然后在Git Clone之后Git Public之后将执行邮件后提交执行。
预先接收式包装
更新
后接收式胶带不影响Git-Receive Pack的结果。
PS:完整的挂钩说明,请参阅官方网站链接
githooks存储在.git文件夹中。git是一种多人协作工具,可以合理地说,git仓库中的所有文件都应跟踪并上传到远程仓库。但是,有一个例外,.git文件夹没有,这导致了问题。在本地配置Githooks之后,我们如何与其他朋友分享?复制?太多了,它太优雅了,无法使用git和coppy。这次我们可以使用沙哑
沙哑是一种使配置的git钩更容易的工具。沙哑的原理是让我们在项目root目录中编写一个配置文件,然后在安装沙哑时将配置文件与githooks关联,以便我们可以在githook中使用githooks团队。您还可以直接执行Githooks。沙哑不是对同学的好了解。您可以在另一篇文章中阅读我。
但是,我们的项目是由Vue-CLI构建的。vue用过,分叉自我,然后进行了一些更改:
然后,我们的最终方法是将包装添加到约克的包装中
但是每次我没有成功时,我都会查看源代码。在其中找到的路径基于当前的node_modules,然后找到package.json。
install.js
如果我们想直接使用它,则需要在每个顺从性中安装Yorkie,但是您可以在主模块中处理一次。您不能在子模块中多次处理。最后,您决定使用约克源代码对其进行修改。初始化时执行一次
最后,我们根据约克的想法制作了一个注册表模块githooks脚本,然后只需要在初始化时执行一次
编写脚本后,执行一次,您将生成子模块的相应githooks。您可以在根目录中查看生成的githooks(添加了“顺从模块”后,提交的.git文件夹将成为.git文件,然后指向主模块,因此添加的挂钩也位于主模块中)
如果添加后的子模块棉棉有错误:这可能是Babel版本的问题,您只需要在子模块上添加Babel配置,然后继承主模块的配置