11月29, 2016

git之submodule

这阵子刚好有一些思考。譬如说自己在gitlab上搭了一个项目,同事要用,他该怎么使用?

  • 方式一:通过npm

即我把代码上传到npm,然后他就通过npm install。这样的方案,不利于团队合作。因为一旦某人走了,那其他人上传npm就很麻烦了。除非在npm发布的时候,指定固定的用户名和密码。所有的人发布模块都按那个来。

  • 方式二:变通的npm

即通过下面的方式:

npm install git+ssh://git@192.168.2.107:mior-corp-front/antd-css-reset.git

通过npm来安装gitlab或者github上面的地址。不好的点在于,package.json中没有,需要其他人clone下来后手动安装该模块。

  • 方式三:通过bower

前提是团队中有私有的bower库,然后通过映射gitlab地址和库名来安装。但我不确定这种方式,在更新的时候,需不需要维护version的版本号。

  • 方式四:写成模板工具

通过yo即可实现像vue-cli这样的工具。不好的点在于,需要在readme中注明,其他人通过命令来下载需要的模板文件。

  • 方式五:git submodule

  • 方式六:git subtree

下面简单地说一下方式五:git submodule。

它的常用命令是以下几条:

git submodule add git@192.168.2.107:mior-corp-front/antd-css-reset.git
git submodule update
git submodule foreach git pull [origin] [master]

第一条是在当前项目添加子模块的项目,第二条是更新子模块的项目。这里可能会涉及到多个子模块的更新。

由于我们希望别人clone下来时,也能有子模块。所以在上面add完后,要把代码push上去。

别人clone父项目,只需要写成下面的方式,就可以把子项目一起克隆下来了:

git clone git@192.168.2.107:zpu/test-submodule.git --recursive

recursive是递归的意思,记不得这个单词也没事,在后面加--r,随后控制台会列出来:

git-submodule

当然我们也可以通过下面的方式:

git submodule init
git submodule update

更多的操作请参考:使用Git Submodule管理子模块

里面提及的修改Submodule,方法简单知道一下就可以了,但不建议这样做。

如果你非要这样做也可以,步骤如下:

//比如你修改的是sub1目录下的文件
cd sub1
git status
git add .
git commit 
git push origin HEAD:分支名 //可能会有冲突,需要先pull
//再回到父目录,把引用的版本号更新上去
cd ..
git status
git add .
git commit

本文链接:www.my-fe.pub/post/git-submodule.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。