如何使混帐忽略默认设置更改为子模块(How to make git ignore changes t

2019-07-03 11:15发布

由于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配置,但如何将它在默认情况下适用于所有?

Answer 1:

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

见提交1d2f393由莱曼( jlehmann

目前设置submodule.<name>.ignore和/或diff.ignoreSubmodules为“ all ”抑制的DIFF家庭,地位的子模块改变所有输出和提交。

对于状态并承诺这实在是令人困惑的,因为它即使在用户选择记录通过将其添加为一个被忽略的子模块的commit手动这种变化不会在待提交的变化显示出来。
为了雪上加霜的是,以后的“git的承诺”会报错了以“ nothing to commit ”时,仅被忽略的子模块都在上演。

修正了通过使wt_status始终打印上演子模块的变化,不管是什么忽略设置配置。
唯一的例外是当用户明确地使用了“ --ignore-submodules=all ”命令行选项,在这种情况下,子模块输出仍然抑制。
这也使得“ git commit再次”工作时,仅被忽略的子模块的修改都在上演,作为命令使用的“commitable”成员wt_status结构,以确定是否上演的变化都存在。

又见提交c215d3d的git commit的一部分。



Answer 2:

因此,要关闭这个, 没有 ,没有它(可惜)默认选项。



Answer 3:

今天,我发现可以使用git config更改.gitmodules文件,因此可以添加忽略脏标志没有进入该文件并通过手工添加一行:

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

就我而言,我能够在与该命令的脚本两个步骤的自动化。



Answer 4:

我不知道一个默认选项。 要不是一个二进制状态(忽略或不),你可以得到牵引着:

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 ,我不知道有一种方法来设置默认值。 无论如何,你可以在你的一个git的别名为此$PATH 。 编写接受子模块作为参数的脚本,并设置适当的dirty配置值,则该脚本添加到您的$PATH 。 说它git-<command> ,这将是可作为git <command>



Answer 5:

你的意思呢?

git config --global core.ignore dirty

其中,优先写入你的~/.gitconfig文件。



文章来源: How to make git ignore changes to submodules by default