git submodule

使用前提

当你在一个Git 项目上工作时,你需要在其中使用另外一个Git 项目。

也许它是一个第三方开发的Git 库或者是你独立开发和并在多个父项目中使用的。

这个情况下一个常见的问题产生了:你想将两个项目单独处理但是又需要在其中一个中使用另外一个。

在Git 中你可以用子模块submodule来管理这些项目,submodule允许你将一个Git 仓库当作另外一个Git 仓库的子目录。

这允许你克隆另外一个仓库到你的项目中并且保持你的提交相对独立。

一、添加git管理的子模块到你的主项目中

例如:将远程项目git@github.com:username/MainProject.git克隆到当前项目目录。
首先进入到当前目录下:

cd MainProject

然后:

git submodule add git@github.com:username/MainProject.git

此时就会在当前目录下有一个目录MainProject
注意:如果你指定将子仓库放到主目录的某个文件夹dirName下,则需要:
git submodule add git@github.com:username/subProject.git dirName
此时你会发现你已经把subProject项目clone到subProject文件夹下面。

当添加子模块后运行git status, 可以看到目录有增加1个文件.gitmodules, 这个文件用来保存子模块的信息。

$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   .gitmodules
    new file:   subProject

然后执行以下命令,将文件push到远程仓库

git add .
git push

二、clone一个带有子项目或者第三方库的项目代码时:

首先clone主项目;
然后

git submodule init
git submodule update

此时我们进入到子仓库,查看子仓库分支,发现是默认git submodule update并不会将submodule切到任何branch,所以,默认下submodule的HEAD是处于游离状态的(‘detached HEAD’ state)。
所以在修改前,记得一定要用git checkout main将当前的submodule分支切换到main分支。

三、如果子仓库有更新了,可以直接进入到子仓库,使用git pull更新子仓库

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • git 的 submodule 作为一个独立的 repo, 其拥有普通 repo 全部的功能, 我们可以完全按照普...
    闪耀旅途阅读 5,403评论 0 0
  • 写在前面: 1、使用Git Submodule可能遇到的坑(http://blog.devtang.com/201...
    Funnyer阅读 11,193评论 0 0
  • 面对比较复杂的项目,我们有可能会将代码根据功能拆解成不同的子模块。主项目对子模块有依赖关系,却又并不关心子模块的内...
    前端辉羽阅读 6,370评论 0 2
  • git将submodule有关的信息保存在两个地方:.gitmodules在仓库中,有版本控制,修改之后会同步到其...
    霁_雪阅读 6,476评论 0 0
  • 开发过程中,经常会有一些通用的部分希望抽取出来做成一个公共库来提供给别的工程来使用,而公共代码库的版本管理是个麻烦...
    重学前端MDN阅读 5,228评论 2 1

友情链接更多精彩内容