我正在尝试从现有文件夹创建一个新的git存储库。我在文件夹的根目录中创建了一个.gitignore
文件。但如果我说
git add *
git commit
git push
应该被忽略的文件仍然会被提交到远程存储库。我在Windows上。
我也买了SmartGIT的许可证。它似乎也忽略了.gitignore
。我必须手动选择要提交的新文件。
答案 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)