2016-11-04 60 views
1

我有.gitignore文件與排除文件的名稱。當我刪除.git文件夾並做git init,在git add *後,我期望所有文件被添加,不會被.gitignore忽略。但是,.gitignore在git status中顯示爲untracked文件,即使我在.gitignore中包含!.gitignore,我也必須手動將其添加到git add .gitignore爲什麼「git add *」排除.gitignore?

+5

看來你的shell忽略glob擴展中的點文件。如果不知道您使用了哪個shell以及如何配置它,則無法多說。無論如何,這是一個簡單的「如何使用我的操作系統」的問題,與編程無關。就我個人而言,我總是使用'git add .'並對整個業務進行旁觀。 –

+0

閱讀此:http://unix.stackexchange.com/questions/70928/shell-wildcards-and-dot-files –

回答

1

因爲在你的命令*實際上是從當前目錄文件(和目錄)的名稱進行替換除了那些盯着W¯¯.。如果你想也包括的.gitignore你應該叫:

git add * .gitignore 

如果你想包括所有的點文件稱:如果你正在使用的zsh

git add * .[!.]* 

,您可以用更簡單的模式:

git add * .* 
+0

錯誤,小心使用'。*':它包括'..'和'git add .. '比OP期望的要多得多! –

+0

@MatthieuMoy「小心」 - 絕對正確。但在OP的情況下(當CWD是repo的根目錄時),git將不包含任何內容。另一種情況是當你在一個子目錄中時。 – jankes

+0

我得到'致命的:..:'..'在倉庫之外,但它回答了我的問題。我想git添加*以包含回購所需的所有文件,但我想我只是'git add * .gitignore' – Radivarig