理解.gitignore

时间:2013-05-14 07:15:32

标签: git

我的根目录中有一个.gitignore文件。规则是忽略所有.txt文件。在我的根目录中,我有两个文件,即something.py和anything.txt。

我在编写.gitignore之后创建了anything.txt文件。

现在,当我发出git add *(在两个文件中进行更改之后)时,它会抛出以下消息:.gitignore文件anything.txt会忽略以下路径。致命:没有添加文件。

但是,当我明确添加something.py时,它会被添加..

那么为什么不.c添加git add *,即使它没有在.gitignore文件中提到过?

2 个答案:

答案 0 :(得分:3)

当您键入命令git add *时,它会被shell扩展以匹配当前目录中的所有非隐藏文件。在您的情况下,它变为git add something.py anything.txt

Git认为您要添加与anything.txt中的条目*.txt匹配的文件(.gitignore)。这就是它抛出错误的原因。该命令失败,未添加任何文件。

要添加项目中的所有文件,您不能依赖shell行为( * 扩展)。您应该使用git add -A或更高版本,分别添加文件的每个逻辑包。

答案 1 :(得分:1)

这正是它的工作原理:.gitignore是一种简单的机制,可以说git哪些文件类型不应该添加到您的存储库中。

例如,添加*.txt表示您不想添加文本文件。 但它没有提及python文件的任何内容,它们将照常添加。

您可以使用.gitignore覆盖git add -f file_or_dir。 如果您在忽略.txt时尝试git add something.txt,git会发出警告并拒绝执行此操作,除非您使用-f

使用git add *将尝试添加当前目录中的所有文件,包括.txt,这将导致警告。您可以使用git add .来避免这种情况。