Git 中一个类似 Composer 的工具|子模块

tengxunyun cera

Composer 对于做 PHP 开发的人来说一定不陌生,也极大的方便了日常开发工作,找到合适的包直接加载一下就可以使用

对于 Git 中的一个工具你了解过吗,在工作中的项目可能需要包含另外一个项目,也许是一个第三方库,也许是你自己开发的一个私有库

说到第三方库一定会想到使用 Composer 去加载,使用 Composer 加载你在部署的时候要确保每一个客户端都包含这个库

如果将代码复制到自己的项目中,那么你做的任何自定义修改都会在合并的时候变得困难

Git 通过子模块来解决了这个问题。子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录,它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立

开始使用子模块

在已存在的仓库中添加子模块,可以使用git submodule add命令,比如这样

$ git submodule add [email protected]:sy-records/GetIP.git

默认情况下,子模块会将子项目放到一个与仓库同名的目录中,本例中是 “GetIP”。 如果你想要放到其他地方,那么可以在命令结尾添加一个不同的路径

查看一下状态会发现:

$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD ..." to unstage)

        new file:   .gitmodules
        new file:   GetIP

多出了一个.gitmodules文件

这个配置文件是保存了项目的URL和本地目录之间的映射关系

$ cat .gitmodules
[submodule "GetIP"]
        path = GetIP
        url = [email protected]:sy-records/GetIP.git

如果有多个子模块,这个文件中就会有多条记录,它会和该项目的其他部分一同被拉取推送,这就是克隆该项目的人知道去哪获得子模块的原因

克隆含有子模块的项目

还跟平常克隆项目一样git clone的命令

$ git clone [email protected]:sy-records/git-submodule.git

然后你就会发现,克隆下来的子模块文件夹是空的,没有代码

是因为包含子模块的项目不仅仅克隆下来就可以了,需要运行两个命令:

git submodule init用来初始化本地配置文件

git submodule update从该项目中抓取所有数据并检出父项目中列出的合适的提交

$ git submodule init
Submodule 'GetFavicon' ([email protected]:sy-records/GetFavicon.git) registered for path 'GetFavicon'
Submodule 'GetIP' ([email protected]:sy-records/GetIP.git) registered for path 'GetIP'

$ git submodule update
Cloning into 'F:/Test/git-submodule/GetFavicon'...
Cloning into 'F:/Test/git-submodule/GetIP'...
Submodule path 'GetFavicon': checked out '2808acdbbfa08579460e5edc9f26bce49c8a66a9'
Submodule path 'GetIP': checked out '48be97908b62fb9a8c3623feb67f45e3c7a484f0'

或者在克隆的时候加上--recursive选项,就会在拉取的时候自动初始化并更新仓库中的每一个子模块

就先说这么多,溜了 🙄

cera aliyun tengxunyun cloudiplc

相关推荐

Git|一款比付费主题更好用的WordPress免费主题

主题简介 Git是一款比付费主题更像是付费主题的WordPress免费主题。作者云落常用Git托管代码,所以这款主题就定名为Git并免费分享。 主题特点 优越的后台体验,多彩皮肤切换,集成多种常用功能,完整的短代码支持,拥有CMS/博客两种风格,完美支持七牛云等。 详细介绍请访问:https://gitcafe.net/archives/3589.html 主题展示     后台演示:https://gitcafe.net/template/admin.htm 主题下载 作者主页:https://gitcafe.net/ Github地址:https://github.com/yunluo/Git 最新版下载:https://github.com/yunluo/Git/archive/alpha.zip

Ftpit|KVM|1.49美元起|弗里蒙特|洛杉矶|纽约三机房可选

#Ftpit#在分享过几次,这也是一家提供低价且支持月付的VPS主机商之一,商家成立于2013年,提供VPS和独立服务器租用等,其中VPS基于#OpenVZ#和#KVM#架构,数据中心在美国#洛杉矶#、#弗里蒙特#、#达拉斯#和#纽约#等地区。目前,商家针对KVM主机提供优惠套餐,KVM VPS最低每月1.49美元起,支持月付,可选美国三个地区机房。 CPU:1core 内存:256MB 硬盘:10GB SSD 流量:512GB/#100Mbps# 架构:KVM IP/面板:IPv4/SolusVM 价格:$1.49/月购买链接

cmivps|72刀每年|全场7折|香港不限流量VPS|Windows系统

cmivps怎么样,cmivps好不好,cmivps香港VPS带来了3个新消息:(1)双向流量改为单向流量,相当于流量间接扩大一倍;(2)Hong Kong 2T、Hong Kong 3T、Hong Kong 无限流量,这三款VPS开始支持Windows系统,如果需要中文版Windows系统请下单付款完成之后发ticket要求官方更改即可;(3)全场7折年付、8折月付优惠,优惠码有效期一个月! cmivps香港VPS带来了3个新消息:(1)双向流量改为单向流量,相当于流量间接扩大一倍;(2)Hong Kong 2T、Hong Kong 3T、Hong Kong 无限流量,这三款VPS开始支持Windows系统,如果需要中文版#Windows#系统请下单付款完成之后发ticket要求官方更改即可;(3)全场7折年付、8折月付优惠,优惠码有效期一个月! 测试IP:#156.234.192#.1 7折优惠码:liuzhanwu7,续费不涨价 8折优惠码:liuzhanwu8,续费不涨价 #推荐# cmivps:全场7折,香港不限流量VPS,支持Windows系统 官方网站:https://www.cmivps.com 测试IP:#156.234.192#.1 #8折优惠码#:liuzhanwu8,续费不涨价 #Windows VPS# 也支持Linux系统,默认100M带宽,自带一个IPv4,KVM虚拟,SSD RAID 内存 CPU SSD 流量 价格 购买 2G 2核 30G 2T/月 $218/年 链接 Linux VPS 特征:KVM虚拟,#纯SSD raid#,#不限流量#,自带一个IPv4,记得使用优惠码! 内存 CPU SSD 带宽 价格 购买 1G 1核 10G 5M $79/年 链接

xethost|匈牙利|1核|1g内存|10g硬盘|100mbps|优惠码

CPU: 1 db vCore Ram: 4 GB Disk: 15 GB Network: 100 Mbit/s, Unlimited Traffic IPv4 address: 1 Location: Budapest, Hungary (HU) VMware ESXi Virtualization 99.9% uptime guaranteed ★ VPS:Linux LET-1024(库存数量:10)★ CPU: 1 db vCore Ram: 1 GB Disk: 10 GB Network: 50 Mbit/s, Unlimited Traffic IPv4 address: 1 (This offer does not include IPv6 address.) …

微信扫一扫,分享到朋友圈

Git 中一个类似 Composer 的工具|子模块