.gitignore不工作:应该被忽略的文件仍然被提交

时间:2010-05-24 22:39:19

标签: git

我正在尝试从现有文件夹创建一个新的git存储库。我在文件夹的根目录中创建了一个.gitignore文件。但如果我说

git add *
git commit
git push

应该被忽略的文件仍然会被提交到远程存储库。我在Windows上。 我也买了SmartGIT的许可证。它似乎也忽略了.gitignore。我必须手动选择要提交的新文件。

10 个答案:

答案 0 :(得分:27)

请改为使用“git add .”。

此外,它适用于我(在Linux上):

$ git init
$ echo foo > .gitignore
$ echo foo > foo
$ echo bar > bar
$ git add -v *
The following paths are ignored by one of your .gitignore files:
foo
Use -f if you really want to add them.
fatal: no files added

答案 1 :(得分:26)

您的文件仍然必须被跟踪,您可以通过git status查看,即使文件已在.gitignore中,也会显示您的文件已被修改 你需要这样做:

git update-index --assume-unchanged [path_to_file]

答案 2 :(得分:20)

您的文件是否已被跟踪? .gitignore只会对未跟踪文件的评论进行静音,但不会阻止跟踪文件被跟踪。

答案 3 :(得分:12)

我也遇到过.gitignore的问题。我查看了列出的链接答案,其中修复了一半问题。

真正让gitignore为我工作的是在文件的第一行添加注释。 Git没有解析位于第一行的排除。

干杯

答案 4 :(得分:4)

我在Windows上遇到的一个技巧是使用echo(根据JakubNarębski回答)你必须小心空格。

正如您在重定向运算符确实对实际忽略产生影响之前所见的任何空格。

C:\test>dir /B
TOBEIGNORED

C:\test>echo TOBEIGNORED > .gitignore
C:\test>git status
[...]
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
#       TOBEIGNORED
C:\test>echo TOBEIGNORED> .gitignore
C:\test>git status
[...]
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
nothing added to commit but untracked files present (use "git add" to track)

答案 5 :(得分:4)

您可以创建一个UTF-8编码的文本文件。尝试将其保存为ANSI编码。在git bash中,您可以使用vi -b进行验证。

答案 6 :(得分:0)

您的排除文件掩码可能不准确。

答案 7 :(得分:0)

我在MacOSX上使用git版本1.7.12.3,而且.gitignore的第一行也没有考虑在内。只需在第一行添加注释即可。

答案 8 :(得分:0)

评论行作为文件的第一行至关重要!我花了很多时间尝试排除文件,却发现GIT忽略了忽略文件中的第一行。

答案 9 :(得分:0)

我最后做了 echo node_modules >> .gitignore,但它不起作用。

Windows 终端将文件保存在 UCS-2 LE BOM 中,而 git 不接受。

当我用 Notepad 打开文件并用 UTF-8 编码保存它时,后者工作

notepad save utf-8 encoding

当时效果很好。

我认为他们需要解决这个问题,因为 echo "filetoignore" >> .gitignore 实际上看起来很方便