当前位置:   article > 正文

git submodule的使用_使用subtree将项目导入父项目,在父项目怎么提交对子项目的更改

使用subtree将项目导入父项目,在父项目怎么提交对子项目的更改

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

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

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

 git checkout master
 git pull
  • 1
  • 2

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

提交子项目的内容:

git status
git add .
git commit -m "xxxx"
git pull
git diff
git push
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

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

git diff
git add .
git commit -m "父项目更新关联"
git pull
git diff
git push
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

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

git pull origin master
  • 1

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

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

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

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

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

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

 git checkout master
  git pull
  • 1
  • 2

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

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

父项目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 拉取所有子模块
  • 1
  • 2
  • 3
  • 4
  • 5
  • 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",
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/458106
推荐阅读
相关标签
  

闽ICP备14008679号