这时如果不小心执行了一次git submodule update命令,会将lib/lib_a重新切换到旧的指向。 $ git submodule update Submodule path 'lib/lib_a': checked out '126b18153583d9bee4562f9af6b9706d2e104016' 执行git submodule status命令查看子模组状态,看到lib/lib_a子模组被重置了。 $ git submodule status 126b...
首先执行git submodule init用来初始化本地配置文件,也就是向.git/config文件中写入了子模块的信息。 git submodule update则是从子仓库中抓取所有的数据找到父级仓库对应的那次子仓库的提交id并且检出到父项目的目录中。 git submodule init Submodule'lib'(/path/to/repos/lib.git) registeredforpath'lib'git submo...
好了,到目前为止我们已经使用git submodule add命令为project1成功添加了两个公共类库(lib1、lib2),查看了当前的状态发现添加了一个新文件(.gitmodules)和两个文件夹(libs/lib1、libs/lib2);那么新增的.gitmodules文件是做什么用的呢?我们查看一下文件内容便知晓了: 1 2 3 4 5 6 7 n@hy-hp ~/submd/w...
提交submodule 我们在project-main下,git status发现,多出来的是.gitmodules和文件夹project-sub-1,我们将它们视为普通的文件,提交并推送到远程。 anders@ubuntu:~/repo/project-main$ git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) ...
比如在公司不同开发团队中,有一个基础共享库,同时被多个项目调用。若要保证基础共享库的动态更新,那么就需要把共享库独立为一个代码库,但是分别把共享库...
可以看到,以上方法都有这样那样的缺点,那么有没有其它比较好的方法呢?答案就是使用本文将要介绍的 Git 子模块(submodule)功能。 既然叫 Git 子模块功能,那么自然是和 Git 深度绑定的。正所谓工欲善其事必先利其器,我先来推荐一个 Git 工具 ——GitExtensions。GitExtensions 是一款类似于 TortoiseGit 的 Git 图...
我们发现这个文件夹才是submodule的真实.git文件夹, 我们对于submodule的所做的 commit 信息也都保存在这里. submodule 常用命令 git submodule: 显示所有submodule, 等同于git submodule status 添加submodule 到现有项目 Rungit submodule add -b <branch> --name <name> <repo-url> <local dir> ...
在project1中push之后其实就是更新了引用的commit id,然后project1-b在clone的时候获取到了submodule的commit id,然后当执行git submodule update的时候git就根据gitlink获取submodule的commit id,最后获取submodule的文件,所以clone之后不在任何分支上;但是master分支的commit id和HEAD保持一致。 查看~/submd/ws/project1...
2.1 创建Git Submodule测试项目 2.1.1 准备环境 1 2 3 henryyan@hy-hp ~pwd /home/henryyan mkdir-p submd/repos 创建需要的本地仓库: 1 2 3 4 5 cd~/submd/repos git--git-dir=lib1.gitinit--bare git--git-dir=lib2.gitinit--bare ...
1.git submodule 2.git subtree 我们按照顺序分别演示这两种子仓库的使用方式,方便大家深入理解两种子仓库的使用方式: 1. git submodule(子模块) Git子模块允许我们将一个或者多个Git仓库作为另一个Git仓库的子目录,它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。