git submodule的使用

解释:
父项目1,父项目2,父项目3…
子项目(公共组件或者功能的页面)

需求:父项目1中使用了submodule,而且,需要修改submodule(子项目lib),且需要在父项目2中更新submodule,如何操作:

在父项目1的子项目中,在子项目的文件下(eg:我的项目是在common文件夹下)打开git命令,先切换分支(要不然不知道往哪个分支上提交代码)

 git checkout master
 git pull

修改子项目的代码,一顿操作…

提交子项目的内容:

git status
git add .
git commit -m "xxxx"
git pull
git diff
git push

到此,子项目算是提交成功了,但是还需要更新父项目的关联。(否则还是关联旧的commit id)。

在父项目的文件夹下,打开git命令

git diff
git add .
git commit -m "父项目更新关联"
git pull
git diff
git push

构建项目后,该父项目的关联子项目就更新了,可以看到修改后的效果!!!

方法二:
也可以直接clone下来子项目,修改子项目,然后add,commit,push提交,再然后在父项目中:
在子项目的文件夹下,打开命令行,

git pull origin master

然后切换到父项目的文件夹下,打开命令行:

add,commit,push,等一系列操作,完成更新关联
  • 父项目的提交记录:
common @ 79a16a8d
- Subproject commit 6634ef2f1a5c34eef81836745498c74368a93f1c
+ Subproject commit 79a16a8d39d4d67bcfbb572d0da171c4bf70d5e0

点击common => 对应的分支
点击:79a16a8d,跳转到子项目的某个提交记录上!(eg:log版本号为:79a16a8d)

  • 父项目的文件夹结构中:
common @ 79a16a8d	

点击common => 对应的分支
点击79a16a8d => 对应的log版本号记录(eg:log版本号为:79a16a8d)

别的项目目前仍是指向旧的log记录版本号上:
eg:
common @ 36607298,所以要更新!
父项目 2:
进入到子项目的文件夹下,打开命令行:

 git checkout master
  git pull

进入父项目的文件夹下,打开命令行:

add,commit,pull,diff,push等一些列git命令

父项目2的文件目录:common @ 79a16a8d =>子项目的引用已经更新了!!!!

readme文件:

git submodules

  • 1、常用命令
git clone <repository> --recursive 递归的方式克隆整个项目
git submodule add <repository> <path> 添加子模块
git submodule init 初始化子模块
git submodule update 更新子模块
git submodule foreach git pull 拉取所有子模块
  • 2、为主项目添加Submodules
    2.1 如何在git项目中导入library公共库?例如,为project1添加lib1和lib2
git submodule add git@github.com:zengkaiwang/lib1.git libs/lib1


- 2.2 把主项目的更改提交到仓库
git commit -a -m "add submodules[lib1,lib2] to project1"
git push

3、Clone带有Submodule的仓库


clone父项目,再更新子项目

git clone git@github.com:jjz/pod-project.git
cd pod-project
git submodule init
//更新Submodule:
git submodule update





4、修改Submodule


4.1 首先切换到submodule子项目的目录下,如libs/lib1

cd libs/lib1


4.2 现在我们要修改lib1的文件需要先切换到响应分支,如master分支

//在子项目的目录(如libs/lib1目录)下执行
git checkout master


4.3 修改文件,并可以git status查看变动
4.4 提交Submodule的更改内容

git commit -a -m "update lib1-features by developer B"


4.5 把submodule的修改提交到远程

git push
//这个操作是把变动更新到了lib1远程项目


4.6 然后再回到父目录,提交到本地并更新到远程

//切换到父项目的目录
cd ../../
//提交到缓存区
git add -u
//提交到本地和远程
git commit -m "update libs/lib1 to lastest commit id"
git push

5、更新Submodule,在Submodule的目录下面更新

>cd pod-library
//首先保证在一个分支上
git checkout master
//更新
git pull

可以看到在Submodule的目录中,使用git和单独的一个项目是一样的;
注意:更新Submodule的时候如果有新的commit id产生,需要在父项目产生一个新的提交,pod-libray文件中的 Subproject commit会变为最新的commit id



上线编译的修改
在package.json中添加编译命令build-pro
"build-pro": "ng build --prod --base-href=/unlock/view",
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Git submoduleGit 的一个功能,可以将一个 Git 仓库作为另一个 Git 仓库的子目录进行管理。通过使用子模块,我们可以在一个 Git 仓库中使用另一个 Git 仓库的组件。 使用 git submodule 的步骤如下: 1. 在项目中添加子模块:使用命令 `git submodule add <子模块仓库地址> <子模块存放路径>` 将子模块添加到项目中。 2. 克隆子模块:使用命令 `git submodule init` 初始化子模块,然后使用命令 `git submodule update` 克隆子模块的内容。 3. 切换到子模块分支:通过 `cd <子模块路径>` 进入子模块目录,然后使用 `git checkout <分支名>` 切换到子模块所在的特定分支。 4. 更新子模块:在项目使用命令 `git submodule update --remote` 可以更新子模块为最新的提交。 5. 提交子模块修改:在项目中修改了子模块后,需要切换到子模块目录,进行提交和推送操作。 使用子模块的好处是可以将子项目作为独立的仓库进行开发和维护,同时在项目中方便地使用和更新子模块。使用子模块可以实现项目的模块化和复用,提高代码的可维护性和可重用性。 需要注意的是,使用子模块时需要注意子模块的分支和版本控制,因为子模块可能会更新,需要及时更新项目中的子模块。同时,在多人协作开发中,也需要注意在提交项目时确保子模块的修改也已经提交。 总之,使用 Git submodule 可以方便地在项目使用子模块的组件,提高代码管理的灵活性和可重用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值