理解 .gitignore

4
我在根目录下有一个.gitignore文件,规则是忽略所有.txt文件。在我的根目录下,我有两个文件,分别为something.py和anything.txt。
我在编写.gitignore后创建了anything.txt文件。
所以,现在当我执行git add *命令(在两个文件都进行更改后),它会抛出以下消息:The following paths are ignored by your .gitignore file anything.txt. fatal: no files added.
但是,当我显式地添加something.py时,它被添加了。
那么,即使未在.gitignore文件中提及,为什么.py文件不会随着git add *而被添加呢?

通常人们使用 git add . 而不是 git add *,这样就不会产生这样的错误。 - 1615903
2个回答

3
当你输入命令git add *时,它会被你的shell扩展以匹配当前目录中所有非隐藏文件。在你的情况下,它变成了git add something.py anything.txt
Git认为你想添加一个与.gitignore中条目*.txt匹配的文件(anything.txt)。这就是为什么它会抛出错误。该命令失败了,没有添加任何文件。
要添加项目中的所有文件,您不应依赖于shell行为(*扩展)。您应该使用git add -A或更好地逐个添加每个逻辑文件包。

1
这就是它的工作原理:.gitignore 是一种简单的机制,告诉 git 哪些文件类型不应该添加到你的存储库中。
例如,添加 *.txt 表示你不想添加文本文件。 但这并不意味着什么关于 python 文件,它们将像往常一样被添加。
你可以通过使用 git add -f file_or_dir 来覆盖 .gitignore。 如果你尝试添加一个被忽略的 .txt 文件,git 会警告你,并拒绝执行,除非你使用 -f
使用 git add * 将尝试添加当前目录中的所有文件,包括 .txt,这将导致警告。你可以使用 git add . 来避免这种情况。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接