git submodule 命令使用注意事项

目前工作接触到了git 由于之前使用的是svn版本管理,虽然两者有些相似但是完全不能混为一谈。所以我决定好好看看。

首先让我们了解一下为什么需要git submodules这种处理方式,如果要对外部依赖项进行严格的版本管理,则可以使用git子模块。以下是git子模块的最佳用例:

(1)当外部组件或子项目的更改速度太快或将发生的更改将破坏API;

(2)更新频率不高但希望将其作为供应商依赖性进行跟踪;

(3)将项目的一部分委派给第三方,想在特定的时间或发布时集成他们的工作。

今天遇到了一个问题,就是当你的git 资料库(repository,后面简称repo)用到另一个git repo的时候该注意什么。

因为我刚接触git版本控制开发的项目,在git clone url下载代码的时候发现,它还会clone 另一个url 并且提示输入密码。。。我就懵了,因为我已经生成过ssh密钥,而且在git lab上添加过ssh 公钥了,怎么还会出现提示输入密码的情况?

后来发现sub modules指定url是另一台gitlab服务器,我没有在那台服务器上面添加ssh public key(其实是同事发现的。怪我没有脑子。。。。)后来我将两台服务器用了同一个public key就可以clone成功了。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

一个特别好的git英文教程:

https://www.atlassian.com/git/tutorials

git submodules:

https://www.atlassian.com/git/tutorials/git-submodule#:~:text=A%20git%20submodule%20is%20a%20record%20within%20a,automatically%20updated%20when%20the%20host%20repository%20is%20updated.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Common commands for Git submodules

git submodule add

用于向一个已经存在的repo添加一个新的repo 

举例:建立一个空的repo并且添加一个submodules

mkdir git-submodule-demo && cd git-submodule-demo
git init   #initialize a new repo
git submodule add https://1.1.10.1/shanzi.git #add submodule to new repo.the git submodule add command takes a URL parameter that points to a git repo


通过这个命令系统会立刻clone 这个submodule,并且我们可以看到多了shanzi.git下的文件,和一个.gitsubmodules (保存的是submodule 的地址映射)

[submodule "XXX"]
path = XXX
url = URL

当我们使用git clone 一个带有submodule是 repo的时候我们会发下clone结束以后原本引入submodule 的文件夹是空的,此时我们可以在该文件夹下使用

git submodule init #把.gitmodules file中的记录更新本地 .git/config中

git submodule update #从submodule 项目fetch所有数据并且在父项目中checkout mapped commit

可以使用--recursive 选项来告诉git clone也要 init 和 update 所有的submodules

git clone --recursive URL 

缺点:可能init 多余的submodule 

我们可以使用一个扩展的命令来init 我们需要的submodules

git submodule int ”module name“ #module name就是我们的”XXX"

Submodule workflows

子模块在初始化和和更新后就可以像独立存储库一样使用他们。因为子模块拥有自己的分支个历史记录。对子模块进行更改时,重要的是发布子模块更改,然后更新对子模块的父存储哭的引用。

注意始终提交和推送子模块和父存储库。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值