我的根目录中有一个.gitignore文件。规则是忽略所有.txt文件。在我的根目录中,我有两个文件,即something.py和anything.txt。
我在编写.gitignore之后创建了anything.txt文件。
现在,当我发出git add *(在两个文件中进行更改之后)时,它会抛出以下消息:.gitignore文件anything.txt会忽略以下路径。致命:没有添加文件。
但是,当我明确添加something.py时,它会被添加..
那么为什么不.c添加git add *,即使它没有在.gitignore文件中提到过?
答案 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 .
来避免这种情况。