4

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

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

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

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

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

4

2 回答 2

3

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

Git 认为你想添加一个文件 ( anything.txt) 匹配*.txt你的.gitignore. 这就是它抛出错误的原因。该命令失败并且没有添加任何文件。

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

于 2013-05-14T07:23:16.207 回答
1

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

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

.gitignore您可以通过使用覆盖git add -f file_or_dir。如果您git add something.txt在 .txt 被忽略时尝试,git 会警告您并拒绝这样做,除非您使用-f.

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

于 2013-05-14T07:22:57.063 回答