Ben*_*ron 24 git git-submodules
我有一个包含多个子模块的git repo.其中一个子模块有自己的多个子模块.我要做的就是检查主仓库上的旧提交,并检查所有子模块的相应提交,以获得当时代码的正确状态.
我知道git包含必要的信息,因为ls-tree命令可以告诉我每个子模块所在的提交.但是,我必须手动检查每一个,这是非常耗时的.
我正在寻找类似的东西,git checkout --recursive但这样的命令似乎并不存在.
反正有没有这样做?
Chr*_*ial 31
您需要两个命令来实现此目的:
git checkout *oldcommit*
git submodule update --recursive
Run Code Online (Sandbox Code Playgroud)
Von*_*onC 19
注意:如果您有多个子模块(以及子模块内的子模块),Git 2.14(2017年第3季度)将有所帮助(更近期是2013年的OP)
git checkout --recurse-submodules
Run Code Online (Sandbox Code Playgroud)
使用
--recurse-submodules将根据超级项目中记录的提交更新所有初始化子模块的内容.
如果子模块中的本地修改将被覆盖,则除非-f使用,否则检出将失败.
" git checkout --recurse-submodules"对于本身有子模块的子模块不太适用.它将与Git 2.14.
注意:使用Git 2.19(Q8 2018),git checkout --recurse-submodules another-branch更加强大.
之前,它没有报告哪个子模块无法更新工作树,导致无效的错误消息.
见Stefan Beller()提交ba95d4e(2018年6月20日).(由Junio C Hamano合并- -在提交392b3dd,2017年7月24日)stefanbeller
gitster
submodule.c:报告发生错误的子模块更新子模块的工作树时发生错误
submodule_move_head,告诉用户发生错误的子模块.调用
read-tree包含超级前缀,以便read-tree正确报告任何与路径相关的问题,但某些错误消息不包含路径,例如:Run Code Online (Sandbox Code Playgroud)~/gerrit$ git checkout --recurse-submodules origin/master ~/gerrit$ fatal: failed to unpack tree object 07672f31880ba80300b38492df9d0acfcd6ee00a给出提示哪个子模块有问题.
根据旧结帐中是否有更多子模块,您可能必须执行以下操作来初始化新提交中不再存在的子模块:
git checkout *oldcommit*
git submodule init
git submodule update --recursive
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13727 次 |
| 最近记录: |