. gitignore 不工作-文件仍在跟踪

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

*.pyc

现在,当我在回购函数的根部执行以下操作时。

git init
git add .
git status

它显示它仍然跟踪 .pyc文件并尝试将其作为新文件添加。

系统信息: Windows 7,cygwin

注意: 这个问题显然与已经被跟踪的被忽略的文件无关。我还在 .gitignore文件上尝试了 DOS 和 Unix 风格的行尾。

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
#   new file:   feedapp/appconfig.pyc

我如何进一步进行故障排除?

97573 次浏览

.gitignore仅适用于 无迹可寻文件。如果您跟踪的是 .pyc,那么 .gitignore将不适用。删除 .pycgit rm和下次你做一个 git status它(和任何其他)将不会显示在未跟踪文件的列表,也不会自动添加。


否则,如果需要忽略已处于版本控制下的文件,请更新索引以忽略对已处于版本控制下的文件所做的更改:

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

有关详细信息,请参阅 < em > git-update-index (1) Manual Page 相关答案 < em > . gitignore 文件不忽略 相关问题的答案(< em > GIT: 忽略版本控制文件 )

返回文章页面

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 .

我遇到过完全相同的问题——即使我在第一次添加任何内容之前准备了一个. gitignore 文件。 我发现问题出在我忽略文件的空白处。 不要在忽略文件中添加任何空白,然后再试一次。我想一切都会好起来的。 祝你好运

我也有同样的问题。我发现运行 "someText" > .gitignore会生成一个编码奇怪的文件。我把它改成了 UTF-8然后一切正常。

检查您的。吉蒂诺档案。在一个 OS X 回购,我的是使用 CR 行结束。一切工作后,再次切换到 LF。

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

控制台的骑师可能会改用 sed

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