Git Submodule 允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。这意味着你可以在一个 Git 仓库中嵌套另一个 Git 仓库,从而方便地管理依赖关系。Submodule 指向特定的提交,允许你控制何时更新依赖的仓库。 2. Git Submodule如何追踪commit id? Git Submodule 通过记录一个特定的 commit ID 来追踪依赖仓库的状...
当我们更新子项目后,相当于是把主项目记录的 submodule 的 commit id 给更新了,需要提交下主项目的变更。 方法三,主项目执行git submodule update [submodule文件夹相对路径] 注意,这个方法会使 submodule 的分支处于主项目里指定的 commit id。可能并不是拉 submodule 的 master 最新代码。 所以,这种方法仅适用于,...
值得注意的是,此时主项目修改的是其依赖的子项目的版本,而非完整变更代码,即引用的子项目的commit id。 2.3.3 子项目远程更新,主项目已更新 commit id 此时在主项目中执行git pull后会自动同步主项目中的子项目commit id依赖,由于主项目已知子项目更新,只需要执行 submodule 更新命令便可将落后的子项目更新到指定...
可以看到,除了两个子仓库外,还多了一个叫.gitmodules的文件,这是一份子模块与路径的映射关系图,git 根据这份文件去识别 submodule。现在查看一下文件内容: [submodule "child1_repo"] path = child1_repo url = git@github.com:xxx/child1_repo.git [submodule "child2_repo"] path = child2_repo url =...
Git对于Submodule有特殊的处理方式,在一个主项目中引入了Submodule其实Git做了3件事情: 记录引用的仓库 记录主项目中Submodules的目录位置 记录引用Submodule的commit id 在project1中push之后其实就是更新了引用的commit id,然后project1-b在clone的时候获取到了submodule的commit id,然后当执行git submodule update的时候...
记录引用Submodule的commit id 在project1中push之后其实就是更新了引用的commit id,然后project1-b在clone的时候获取到了submodule的commit id,然后当执行git submodule update的时候git就根据gitlink获取submodule的commit id,最后获取submodule的文件,所以clone之后不在任何分支上;但是master分支的commit id和HEAD保持一致...
这个方法会自动拉取submodule的主分支(通常叫master或main)的最新版本。效果跟方法一一致。 如果你不带参数[submodule文件夹相对路径],就会更新所有 submodules。 注意事项,更新后需提交主项目变更。 当我们更新子项目后,相当于是把主项目记录的 submodule 的 commit id 给更新了,需要提交下主项目的变...
git submodule add https://git.oschina.net/gaofeifps/leg.git 这时查看下状态会多两个文件 ➜ body git:(master) ✗ git status On branch master Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits) ...
git submodule deinit usr/plugins/BaiduSubmit # 此时.git/config 已被重写,BaiduSubmit的相关信息已经不存在了 git rm usr/plugins/BaiduSubmit # 这时,子模块文件被删除,同时.gitmodules 文件中的相关信息被删除 # 还有一种情况,就是子模块刚被add,但是还没有commit的时候,这时如果反悔了,但是还想保留工作现场,可...
方法一,先 clone 父项目,再初始化 submodule,最后更新 submodule。 初始化只需要做一次,之后每次只需要直接 update 即可,需要注意 submodule 默认是不在任何分支上的,它指向父项目存储的 submodule commit id。 git clone project.git project2 cd project2 git submodule init git submodule update 方法二,采用递归...