Dyl*_*tie 237 git git-submodules
在我天真的时候,我已经设置了一个git子模块并将其视为Subversion外部 - 即它现在充满了我刚才意识到的未经提交或推送到任何地方的变化.
是否有一些简单的方法将子模块更改提交/推送回上游存储库?Git推荐的技术是什么,以这种方式在单独的(但链接的)存储库上同时进行开发?
tim*_*dev 381
子模块是它自己的repo/work-area,有自己的.git目录.
因此,首先提交/推送子模块的更改:
$ cd path/to/submodule
$ git add <stuff>
$ git commit -m "comment"
$ git push
Run Code Online (Sandbox Code Playgroud)
然后告诉您的主项目跟踪更新版本:
$ cd /main/project
$ git add path/to/submodule
$ git commit -m "updated my submodule"
$ git push
Run Code Online (Sandbox Code Playgroud)
Von*_*onC 52
请注意,如果您在各种子模块中提交了一系列更改,您可以(或将很快能够)一次性推送所有内容(即从父仓库中推送一次),其中:
git push --recurse-submodules=on-demand
Run Code Online (Sandbox Code Playgroud)
git1.7.11([ANNOUNCE] Git 1.7.11.rc1)提到:
"
git push --recurse-submodules"学会了选择性地查看与超级项目绑定的子模块的历史并推出它们.
可能在此补丁和--on-demand选项之后完成:
--recurse-submodules=<check|on-demand|no>::
Run Code Online (Sandbox Code Playgroud)
确保要推送的修订使用的所有子模块提交都可在远程跟踪分支上使用.
- 如果
check使用,将检查在推送的修订中更改的所有子模块提交在远程上是否可用.
否则推送将被中止并以非零状态退出.- 如果
on-demand使用,则将推送要推送的修订中更改的所有子模块.
如果按需无法推送所有必要的修订,它也将被中止并退出非零状态.
此选项仅适用于一个嵌套级别.不会推送对另一个子模块内部子模块的更改.
$ git submodule status --recursive
Run Code Online (Sandbox Code Playgroud)
在这种情况下也是一个救生员.您可以使用它并gitk --all跟踪您的sha1并验证您的子模块是否指向您认为它们是什么.
您可以将子模块视为与普通存储库完全相同.要在上游传播您的更改,只需像在通常的目录中一样提交和推送.
| 归档时间: |
|
| 查看次数: |
167366 次 |
| 最近记录: |