解释:
父项目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",