我一直这样做:
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
谁能解释这些在做什么?我什至不确定最后一个命令是否在执行我认为的操作。
答案 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。