2012-10-31 123 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 

在我的情況,我使用該命令可以自動執行腳本中的兩個步驟。