.gitignore不起作用
我有一个.gitignore文件在我的回购的根。 .gitignore文件具有以下模式来排除已编译的python文件,这是文件中的唯一行。
* .pyc文件
现在,当我做了以下在回购的根源。
- git init
- git add。
- 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存储库复制了我的工作副本。