将所有内容都存储在 Git 中,包括所有子模块?

Stash everything in Git including all submodules?

当项目包含子模块时,您需要 stash/unstash 将它们全部分开。有没有办法用更少的动作来做到这一点?

这个link可能有帮助:

Easy way pull latest of all submodules

它是关于 "pull" 命令的,但是有一些方法可以在所有子模块之间进行迭代。

您可以在每个子模块上使用 foreach 到 运行 特定的 git 命令。例如,要将 'git stash' 应用于每个模块,请使用:

git submodule foreach 'git stash'

同样,以下命令将检出 master 分支,然后从远程源为每个子模块提取任何更新。

git submodule foreach 'git checkout master; git pull'

阅读更多信息:http://git-scm.com/book/en/v2/Git-Tools-Submodules

警告:在 Git.24(2019 年第 4 季度)之前,使用“git submodule foreach git stash”可能会丢失对子模块的本地更改

commit 556895d (12 Oct 2019) by Jakob Jarmar (jarmar)
(由 Junio C Hamano -- gitster -- in commit bb52def 合并,2019 年 10 月 18 日)

stash: avoid recursive hard reset on submodules

Signed-off-by: Jakob Jarmar

git stash push does not recursively stash submodules, but if submodule.recurse is set, it may recursively reset --hard them.

Having only the destructive action recurse is likely to be surprising behaviour, and unlikely to be desirable, so the easiest fix should be to ensure that the call to git reset --hard never recurses into submodules.

This matches the behavior of check_changes_tracked_files, which ignores submodules.