2012-10-31 126 views
5

更改子模块由于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的配置,但是如何将它默认应用于所有?

+0

不知道默认情况下是否有办法做到这一点,但您可以轻松添加别名或脚本来为您完成此操作。 – Christopher

+0

我不明白怎么做别名。至于脚本,我只是希望git有一个默认选项 – shkschneider

+0

Git将把作为'git-'作为'git '以$ PATH开头的任何脚本视为别名。您只需编写一个接受子模块名称的shell脚本,添加它,然后发出'submodule'。 .ignore'配置,只是称之为'git supersubmodule'什么的。 – Christopher

回答

3

所以要关闭这个,没有,没有它的默认选项(可悲)。

+0

这似乎在git v2.7.0上仍然如此。 –

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中用git别名来做到这一点。编写一个接受子模块作为参数的脚本,并设置适当的配置值,然后将该脚本添加到您的$PATH。将其称为git-<command>,它将以git <command>的形式提供。

+0

好的,我知道差异和地位的选项,但想要更好的东西。脚本是一个可行的选择。 – shkschneider

+0

这是一个很好的候选人的git列表。 THey可以给你一个明确的答案,如果答案是“否”,那么可能会提出一个补丁。 – Christopher

-1

你的意思是?

git config --global core.ignore dirty

其偏好写入您~/.gitconfig文件。

+0

我不认为它有效。至少它不适合我(git 1.8.5)。 –

+0

@brianclements哪个版本支持此选项? – shkschneider

+0

我在Ubuntu 14.04上使用git 1.9.1。但在第二次重访中,我认为这对我也不起作用。但是,再次,提醒我我的子模块的“新提交”和“未跟踪内容”是我反正想要的行为,也许我误解了OP的问题。 – brianclements

4

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

commit 1d2f393通过Jens Lehmann (jlehmann)

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

对于状态和提交,这是非常令人困惑的,因为即使用户选择通过手动添加来记录新忽略子模块的提交,该更改也不会显示在待提交的更改下。
为了增加对受伤的伤害,当只有被忽略的子模块暂存时,稍后的“git commit”会错误输出“nothing to commit”。

修复通过使wt_status始终打印分级子模块更改,无论配置了什么忽略设置。
唯一的例外是当用户明确使用“--ignore-submodules=all”命令行选项时,在这种情况下子模块输出仍然被抑制。
当只有被忽略的子模块的修改是 分阶段时,这也使得“git commit”再次工作,因为该命令使用wt_status结构的“可合用”成员来确定是否存在分阶段更改。

另请参阅commit c215d3dgit commit部分。

+0

git-gui同样适用:https://github.com/git/git/commit/e0db1dd7d4bc87825f0d7d743f1a01b4461a59ff – VonC

1

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

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

在我的情况,我使用该命令可以自动执行脚本中的两个步骤。