rya*_*hee 6 git git-submodules
假设我有一个父代仓库myproject和一个单独的仓库submodule,其目录结构如下:
root$ find . -not -path *.git*
.
./myproject
./myproject/submodule
现在我添加submodule为子模块myproject.
root$ cd myproject
myproject$ git submodule add git://url-to-submodule:submodule.git submodule
Adding existing repo at 'submodule' to the index
现在,让我说我改变了一些东西submodule.
myproject$ cd submodule
submodule$ touch herpin.txt
submodule$ add herpin.txt
submodule$ git commit -am "i'm herpin and i'm derpin"
此时,我将返回父存储库,并检查git状态:
submodule$ cd ..
myproject$ git status
# On branch master
# Changes not staged for commit:
# (use "git add ..." to update what will be committed)
# (use "git checkout -- ..." to discard changes in working directory)
#
# modified: submodule (new commits)
#
no changes added to commit (use "git add" and/or "git commit -a")
该死的 - 现在每次我在子模块中提交一些东西时,我也必须提交父级.
如果你有一个更复杂的子模块树,它会很快变得烦人.让我们说 - 深度为4级.如果我在最内层的子模块上做出改变,我必须提交它的父母,祖父母,曾祖父母,以及伟大的父母.这是---的一个令人痛苦的痛苦.
肯定有更好的办法!(不,不嵌套这么多级别不是一个选项.:/这不是我的调用...)是不是有一种方式git-commit可以通知父提交的存储库?
提交到子模块应该被视为提交到另一个外部库/存储库。
不要在根模块上使用 git status,而在子模块上使用它。
不,您不需要在容器中提交更改,您只需从子模块内提交它们。
然后,您可以进行多项更改、回滚、将子模块保留在稳定分支上等,然后仅将父容器更新为子模块的稳定版本。
更新子模块引用不应该经常进行,而应该只在兼容版本之间切换,否则您会发现连续大量“碰撞”提交只是更新子模块。
简而言之,在子模块中完成工作,提交,在子模块提交中完成更多工作。完成后,通过提交容器将子模块引用更新为新版本,或者将子模块回滚到最后一个稳定版本,将提交留给将来的开发工作。
| 归档时间: |
|
| 查看次数: |
1425 次 |
| 最近记录: |