2016-11-04 59 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