.gitignore不起作用
我的repo根目录下有一个.gitignore不起作用,git,Git,我的repo根目录下有一个.gitignore文件。.gitignore文件具有以下模式来排除已编译的Python文件,这是文件中唯一的一行 *.pyc 现在,当我在回购协议的根部做以下操作时 git init git add . git status 它显示它仍然跟踪.pyc文件,并尝试将其添加为新文件。请参见下面的输出 系统信息:Windows7,cygwin 注意:此问题显然与已跟踪的被忽略文件无关。我还在.gitignore文件中尝试了DOS和Unix风格的行结尾 git状态给出
.gitignore
文件。.gitignore
文件具有以下模式来排除已编译的Python文件,这是文件中唯一的一行
*.pyc
现在,当我在回购协议的根部做以下操作时
git init
git add .
git status
它显示它仍然跟踪.pyc
文件,并尝试将其添加为新文件。请参见下面的输出
系统信息:Windows7,cygwin
注意:此问题显然与已跟踪的被忽略文件无关。我还在.gitignore
文件中尝试了DOS和Unix风格的行结尾
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
分支主机上的#
#
#初始提交
#
#要提交的更改:
#(使用“git rm--cached…”取消存储)
#
#新文件:.gitignore
#新文件:feedapp/\uuuuu init\uuuuuuu.py
#新文件:feedapp/appconfig.py
#新文件:feedapp/appconfig.pyc
如何进一步排除故障
.gitignore
仅适用于未跟踪的文件。如果您正在跟踪.pyc
,则.gitignore
将不适用。使用git rm
删除.pyc
,下次执行git status
时,它(以及任何其他文件)不会显示在未跟踪文件列表中,也不会自动添加
否则,如果需要忽略已受版本控制的文件,请更新索引以忽略对已受版本控制的文件所做的更改:
git update-index --assume-unchanged <files>
git更新索引--假定未更改
有关更多信息,请参阅和。
手动操作系统
:
gitignore文件故意指定git应该忽略的**未跟踪文件**。请注意,所有gitignore文件实际上只涉及git尚未跟踪的文件
git rm文件
将停止跟踪它们。我找不到从repo中删除所有被忽略文件的方法
git init
git add .
git status
正如您所指出的,这些文件似乎并不存在于回购协议中。在这种情况下,您的
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 rm --cached -r .
git add .
我遇到了完全相同的问题——即使我在第一次添加任何内容之前准备了一个.gitignore文件。 我发现问题在我忽略文件的空白处。 请不要在忽略文件中添加任何空白,然后重试。我想一切都会好起来的。
祝你好运,我也有同样的问题。我发现运行
“someText”>.gitignore
生成的文件具有奇怪的编码。我将其更改为UTF-8,然后一切正常。检查.gitignore文件中的行尾。在OSX回购协议中,我的使用了CR行结尾。切换到LFs后,一切又恢复正常
perl -p -e 's/\r/\n/g' < .gitignore > .gitignore-new
mv .gitignore-new .gitignore
perl-p-e's/\r/\n/g'<.gitignore>.gitignore新建
mv.gitignore new.gitignore
控制台管理员可能希望改用sed
背景:停电后,我从Windows存储库复制了我的工作副本。git status的输出是什么?这会有很大帮助。在git添加之前,.gitignore文件是否已就位并已填充。?您从
git rm--cached-r中得到了什么;吉特加;git status
您的.gitignore
文件中包含*.pyc
的行末尾是否有空格?我刚刚做了一个小测试,它似乎很重要。请参阅下面的帖子,它对我很好:这些文件还没有被跟踪……根据您的“git状态”输出,它们是被跟踪的。@Gnu工程师,它们被跟踪了。它们位于索引中,这是由git add创建的暂存区域。它们是否在创建.gitignore
之前放置在那里尚不可知。ikegami:问题已解决。这似乎是由于行尾的格式。我用编辑器创建了.gitignore,后来通过echo重新创建。我现在做了一个d2u,它成功了。谢谢你的帮助,谢谢!不知道的git更新索引-真的很有用!我的理解是git还没有跟踪任何repo中的文件。我试图在忽略*.pyc文件的情况下进行初始提交。ikegami:我的结论与你的相同。一直以来,我已经做过好几次了。我怀疑这与cygwin有关,但这是一个非常简单的模式,它必须支持……@Gnu Engineer,我在家里使用git而不是cygwin。我稍后会在那里试一试。现在,我在回答的底部添加了一个可能的原因和解决方案。使用git rm--cached-r时要小心。
它实际上会删除当前目录中的所有内容,同时确保没有BOM!(字节顺序标记)我也一样。如果您使用的是vim
,请执行:set ff=unix
。出于某种原因,它被设置为mac
。