.gitignore不起作用

我有一个.gitignore文件在我的回购的根。 .gitignore文件具有以下模式来排除已编译的python文件,这是文件中的唯一行。

* .pyc文件

现在,当我做了以下在回购的根源。

  1. git init
  2. git add。
  3. git状态

它显示它仍然跟踪.pyc文件并尝试将其添加为新文件。 看下面的输出…

系统信息:Win 7,cygwin

注意:这个问题清除不是关于被忽略的文件已被跟踪。 另外我也尝试DOS和单元格风格线结束的.gitignore文件。

git状态:

# On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: .gitignore # new file: feedapp/__init__.py # new file: feedapp/appconfig.py # new file: feedapp/appconfig.pyc 

我如何进一步解决这个问题?

.gitignore只适用于未跟踪的文件。 如果您正在跟踪.pyc那么.gitignore将不适用。 用git rm删除.pyc ,下一次你做一个git status它(和任何其他的)不会出现在未跟踪的文件列表中,也不会自动添加。


否则,如果您需要忽略已受版本控制的文件,请更新索引以忽略对已受版本控制的文件的更改:

 git update-index --assume-unchanged <files> 

有关详细信息,请参阅git-update-index(1)手册页.gitignore文件的相关答案 不能忽略以及与问题相关的答案( GIT:忽略版本控制文件 ) 。

man gitignore

gitignore文件指定git应该忽略的有意**未跟踪的文件。 请注意,所有的gitignore文件确实只关心那些还没有被git跟踪的文件

git rm file将停止跟踪它们。 我找不到从回购中删除所有被忽略的文件的方法。


正如你所指出的那样,这些文件似乎不存在于回购协议中。 在这种情况下,你的git的行为既不符合我的文档,也不符合我的行为,我也帮不了你。

 $ mkdir foo $ cd foo /home/ikegami/foo $ mkdir feedapp $ touch feedapp/__init__.py $ touch feedapp/appconfig.py $ touch feedapp/appconfig.pyc $ echo '*.pyc' > .gitignore $ git init Initialized empty Git repository in /home/ikegami/foo/.git/ $ git add . $ git status # On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: .gitignore # new file: feedapp/__init__.py # new file: feedapp/appconfig.py # $ 

也许你做到了

 git init git add . echo '*.pmc' >> .gitignore git init git add . 

在这种情况下,您可以使用修复问题

 git rm --cached -r . git add . 

有完全相同的问题。 发现“someText”> .gitignore制作了一个奇怪的编码文件。 更改为UTF-8,然后一切正常。

我有完全相同的问题 – 即使我第一次添加任何东西之前准备.gitignore文件。 我发现问题是在我的忽略文件的空白处。 不要在您的忽略文件中添加任何空格,然后重试。 我认为一切都会正常工作。 祝你好运

检查.gitignore文件的行尾。 在一个OS X的回购,我的使用CR线的结局。 切换到LF后,一切都恢复正常。

 perl -p -e 's/\r/\n/g' < .gitignore > .gitignore-new mv .gitignore-new .gitignore 

控制台骑师可能会想使用sed来代替。

背景:在电源故障后,我从Windows存储库复制了我的工作副本。