前言
在某家A开头的公司曾经遇到一个问题,其实我们登入都是捞取另外一个资料库去比对帐号密码,但是每次我们写不同系统的时候,都还要每次Copy一份;这时候我的一个前辈找到一个解法:打包成Dll然后架设私人的Nuget Package Server,希望所有人能一起更改Code而且不用对版本号;有一天又聊这件事情的时候,他又突然说可以用Git 子模组就好了!后来听听概念后也没有时间实作。在我离开公司后,把他搭配VS实作出来,前一阵子约出来跟他聊天后,结果他..给..我..忘..记..这..件..事..情!还..一..脸..惊..呆!
环境架构
windows10
git 2.17.1
TortoiseGit 2.7
前置安装
1.安装Git
Git 介绍与在Windows系统下安装
2.安装TortoiseGit(如果习惯用Command可以不用安装)
TortoiseGit | 傻瓜GIT教学
操作方式
现在方式是使用TortoiseGit的方式,如果要用其他想要Command Line之后补上
1.找寻一个有要加入子模组的Git和子模组的Git
如下图,有三个Git
Test、TestSon、TestGrandson
那我们设定的逻辑 TestGrandson 要在 TestSon 底下,然后TestSon要在Test底下
我们先看三个人内容
Test里面有Test.txt
TestSon里面有TestSon.txt
TestGrandson里面有TestGrandson.txt
2.开始加入子模组
先以把TestGrandson加入TestSon为例
到TestSon底下的资料夹按右键,
1.先选TortoiiseGit
2.然后选Submodule Add
加入子模组设定
1.你要加入的子模组
2.你要把子模组加入到哪一个路径(切记指定的路径不能有同名的资料夹)
3.确认
完成后出现的图示
1.刚刚你设定子模组的路径
2..gitmodulesGit:关于子模组的纪录档
检查一下TestGrandSon里面是不是有东西
恩~看起来没错
然后把加入后记得把**.gitmodulesGit** 和加入的子模组 Commit上去
这样就大功告成啦!
进阶操作
如果你想加入的子模组里面又带一个子模组,会怎么样子呢?
操作方式如 前面的操作方式一样
我以把TestSon加入到Test为例
直接显示结果
恩~Test里面有TestSon没错
恩~TestSon资料夹里面有TestGrandSon 也没错
在TestGrandSon 资料夹里面居然是空的!!
这时候小技巧就来了
到TestGrandSon资料夹里面按右键
1.先选TortoiiseGit
2.然后选Submodule Update
选取Whole Project
选完后会这样
1.选取你想要Update的Submodule
2.选择Initialize submodules (--init) 初始化Submodule
3.按确认
确认完后,她就帮你更新
就出现资料啦,大功告成
感想
子模组是一个开发不错的方法,有时候你专案需要把东西切成模组,但是又想要能随时更改,使用Git子模组是一个不错的方式,感谢之前的前辈总是想一些怪点子、KeyWord(他每次讲完都常常忘记),让我到现在能回去找相关资料研究起来。
参考文件
Git 工具 - 子模组 (Submodules)
Git 介绍与在Windows系统下安装
TortoiseGit | 傻瓜GIT教学