Git子模块操作手册

Git子模块操作手册

 

一.添加子模块并提交含子模块项目

1.     在当前项目目录下执行以下命令:

gitsubmodule add https://gitee.com/tianbu/git_module.git

说明:命令分为三部分

gitsubmodule add / https://gitee.com/tianbu/git_module.git/自定义模块名

gitsubmodule add:添加子模块命令

https://gitee.com/tianbu/git_module.git:子模块仓库url,注意此路径只能使用

https路径,测试使用ssh路径有问题。

最后一个参数可选,当有时会自动把模块复制一份到你自定义的模块名之内,不推荐使用,后面会有说明

2.     运行上面命令出现如下提示说明执行成功

Cloninginto '这里显示的是添加的子模块文件夹名'...

remote:Counting objects: 11, done.

remote:Compressing objects: 100% (10/10), done.

remote:Total 11 (delta 0), reused 11 (delta 0)

Unpackingobjects: 100% (11/11), done.

Checkingconnectivity... done.

3.     默认情况下,子模块会将子项目放到子项目文件夹内,windows系统下没有文件夹会自动创建。

4.     运行 git status会有下面提示

On branch master

Your branch is upto date with 'origin/master'.

 

Changes to becommitted:

  (use "git reset HEAD<file>..." to unstage)

 

       newfile:   .gitmodules

        newfile:   git_module

 

新的 .gitmodules 文件。 该配置文件保存了项目 URL 与已经拉取的本地目录之间的映射,打开此文件代码可看到如下内容:

[submodule "git_module"]

       path= git_module

       url= https://gitee.com/tianbu/git_module.git

如果有多个子模块,该文件中就会有多条记录。要重点注意的是,该文件也像 .gitignore 文件一样受到(通过)版本控制。 它会和该项目的其他部分一同被拉取推送。这就是克隆该项目的人知道去哪获得子模块的原因。

由于 .gitmodules 文件中的 URL 是人们首先尝试克隆/拉取的地方,因此请尽可能确保你使用的URL 大家都能访问。 例如,若你要使用的推送 URL 与他人的拉取 URL 不同,那么请使用他人能访问到的 URL。

注:如果第一步添加了第三个参数,此处的配置文件内,追踪的是自定义的文件夹内容,不会追踪另一个

5.    执行git diff ----cached 子模块文件夹名,

$ git diff --cachedgit_module

diff --git a/git_module b/git_module

new file mode 160000

index 0000000..83e764b

--- /dev/null

+++ b/git_module

@@ -0,0 +1 @@

+Subprojectcommit 83e764bca76c2749225039db85c952458364fcb4

 

6.     gitdiff --cached –submodule 也可以执行此命令,查看更详细提示

$ git diff --cached--submodule

diff --git a/.gitmodules b/.gitmodules

new file mode 100644

index 0000000..bba4c00

--- /dev/null

+++b/.gitmodules

@@ -0,0 +1,3 @@

+[submodule"git_module"]

+      path = git_module

+      url =https://gitee.com/tianbu/git_module.git

Submodule git_module 0000000...83e764b(new submodule)

7.    提交时会看到下面内容:

$ git commit -m"提交子模块"

[master 5a0f9f7] 提交子模块

 2 files changed, 4 insertions(+)

 create mode 100644 .gitmodules

 create mode 160000 git_module

160000 模式。 这是 Git 中的一种特殊模式,它本质上意味着你是将一次提交记作一项目录记录的,而非将它记录成一个子目录或者一个文件。

克隆含有子模块的项目

8.     git push提交含有子模块的项目

二.拉取含有子模块项目

1.git clone xxxx 拉取项目

拉取含有子模块的项目,子模块文件夹有,但内容是

空的。你必须运行两个命令:

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

$ git submodule init

Submodule 'git_module' (https://gitee.com/tianbu/git_module.git)registered for path 'git_module'

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

$ git submodule update

Cloning into'D:/phpStudy/PHPTutorial/WWW/git_sub_module/git_module'...

Submodule path 'git_module': checked out '83e764bca76c2749225039db85c952458364fcb4'

也可以用另一个命令在clone的同时把子模块项目内容拉取下来

gitclone -–recursive 项目URL

未完,继续施工

 

 

 

 

 

 

 

 

 

 


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sn_qmzm521/article/details/79976613
个人分类: 脚本
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭