当项目包含子模块时,您需要分别存储/取消暂存所有子模块。有没有办法用较少的动作来做到这一点?
此链接可能有用:
Easy way pull latest of all submodules
关于"拉"命令,但有一些方法如何在所有子模块之间进行迭代。
答案 0 :(得分:14)
您可以使用foreach
在每个子模块上运行特定的git命令。例如,要将'git stash'应用于每个模块,请使用:
git submodule foreach 'git stash'
同样,以下命令将检出master
分支,然后从每个子模块的远程源中提取任何更新。
git submodule foreach 'git checkout master; git pull'
答案 1 :(得分:0)
警告:在Git .24(2019年第四季度)之前,使用“ git submodule foreach git stash
”可能会丢失对子模块的本地更改。
请参见commit 556895d的Jakob Jarmar (jarmar
)(2019年10月12日)。
(由Junio C Hamano -- gitster
--在commit bb52def中合并,2019年10月18日)
stash
:避免在子模块上进行递归硬重置签名人:Jakob Jarmar
git stash
推送不会递归地隐藏子模块,但是如果设置了submodule.recurse,它可能会递归地reset --hard
。仅具有破坏性动作的递归可能是令人惊讶的行为,并且不太可能是可取的,因此最简单的解决方法应该是确保对
git reset --hard
的调用永远不会递归到子模块中。这与忽略子模块的
check_changes_tracked_files,
的行为相匹配。