git子模块-忽略更改

时间:2018-10-02 23:43:20

标签: git git-submodules git-checkout git-reset

我一直这样做:

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

添加了所有内容,因此可以进行我的所有更改,但是在config目录中有一个git子模块。

我一直在使用以下几个命令来“摆脱对配置目录的更改”:

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

谁能解释这些在做什么?我什至不确定最后一个命令是否在执行我认为的操作。

1 个答案:

答案 0 :(得分:2)

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

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

但是,如果您添加了已添加的配置,但尚未提交,则:​​

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

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