git 子模块 - 忽略更改

git submodule - ignoring changes

我一直这样做:

git add .
git add -A
git commit -am "foobar"

它添加了所有内容,因此我的所有更改都已暂存,但我们在配置目录中有一个 git 子模块。

我一直在做的是使用这些命令中的几个来 "get rid of changes to the config dir":

git reset -- config
git checkout -- config
git checkout origin/dev config
git reset HEAD config

谁能解释一下这些在做什么?我什至不确定最后一条命令是否按照我的想法执行。

首先,您不需要重复 git 添加。和 git 添加 -A。如果您位于存储库的根文件夹中,它们都会添加所有内容。

其次,改用 git add -p:您将能够以这种方式忽略对提交子模块文件夹的更改 (since Git 2.17)。您将只添加下一次提交所需的内容,从而进行更小、更细粒度的提交。

但是如果你添加了配置,但还没有提交,那么:

  • git reset config 将取消暂存(从索引中删除)配置子模块条目
  • git checkout origin/dev -- config 将确保该配置的 SHA1 是从源(分支开发)获取的配置,而不是您可能进行的任何本地更改。

您不需要其他命令。我会添加一个 git submodule update --checkout 以确保子模块的内容被检出到正确的 SHA1。