7

由于 gitmodules 是在 Git 中引入的,我喜欢像这样添加它们:

[submodule "actionbarsherlock"]
path = actionbarsherlock
url = git://github.com/JakeWharton/ActionBarSherlock.git
ignore = dirty

这里的重要部分是ignore = dirty.

使用git submodule add命令时,我不得不自己在.gitmodules文件中添加这一行。

我怎样才能使这成为git submodule add我将来所做的每件事的默认行为?

我知道submodule.<name>.ignore配置,但是默认情况下如何将其应用于所有配置?

4

6 回答 6

5

请注意,即使有这样的配置,git 2.0.1(2014 年 6 月 25 日)仍会向您显示已暂存的子模块。

请参阅Jens Lehmann的提交 1d2f393 ( )jlehmann

当前设置submodule.<name>.ignore和/或diff.ignoreSubmodulesall”会抑制 diff 系列、状态和提交的子模块更改的所有输出。

对于状态和提交,这确实令人困惑,因为即使用户选择通过手动添加来为忽略的子模块记录新提交,此更改也不会显示在要提交的更改下。
雪上加霜的是,nothing to commit当仅暂存忽略的子模块时,稍后的“git commit”将出错并显示“”。

通过wt_status始终打印分阶段的子模块更改来解决此问题,无论配置了什么忽略设置。
唯一的例外是当用户显式使用“ --ignore-submodules=all”命令行选项时,在这种情况下子模块输出仍然被抑制。当仅暂存忽略的子模块的修改时,
这也使“ ”再次起作用,因为该命令使用结构的“可提交”成员来确定是否存在暂存更改。 git commitwt_status

有关该部分,另请参见提交 c215d3dgit commit

于 2014-07-27T17:52:08.733 回答
3

所以要关闭它,,它没有默认选项(遗憾的是)。

于 2012-11-29T11:48:21.450 回答
3

今天发现可以git config用来更改.gitmodules文件,因此可以添加忽略脏标志,而无需进入文件并手动添加行:

git config -f .gitmodules submodule.actionbarsherlock.ignore dirty

就我而言,我能够使用该命令自动执行脚本中的两个步骤。

于 2016-08-02T07:01:00.073 回答
1

我不确定默认选项。如果它是二元状态(忽略与否),您可以通过以下方式获得牵引力:

diff.ignoreSubmodules
   Sets the default value of --ignore-submodules. Note that this affects only git diff Porcelain, and not lower level diff commands such as git diff-files.  git checkout also
   honors this setting when reporting uncommitted changes.

但是当您使用时dirty,我不确定是否有办法设置默认值。无论如何,您可以在$PATH. 编写一个接受子模块作为参数的脚本并设置正确的dirty配置值,然后将该脚本添加到您的$PATH. 调用它git-<command>,它将以git <command>.

于 2012-10-31T17:44:43.620 回答
1
[submodule "book"]
    path = book
    url = https://user@bitbucket.org/user/repo.git
    ignore = all

或使用

git config -f .gitmodules submodule.tests.ignore all
于 2022-01-14T15:27:36.950 回答
-1

你是这个意思吗?

git config --global core.ignore dirty

它将首选项写入您的~/.gitconfig文件。

于 2013-11-18T10:17:07.540 回答