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。
我一直这样做:
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。