我在我的仓库的根目录下有一个.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
如何进一步排除故障?
答案 0 :(得分:95)
.gitignore
仅适用于未跟踪文件。如果您要跟踪.pyc
,则.gitignore
将不适用。使用.pyc
删除git rm
,下次执行git status
时,{和其他任何内容}将不会显示在未跟踪文件列表中,也不会自动添加。< / p>
否则,如果您需要忽略已在版本控制下的文件,请更新索引以忽略对已在版本控制下的文件的更改:
git update-index --assume-unchanged <files>
有关详细信息,请参阅git-update-index(1) Manual Page,related answer to .gitignore file not ignoring和related answer to question (GIT: Ignoring Version-Controlled Files)。
答案 1 :(得分:22)
man gitignore
:
gitignore文件指定git应忽略的故意**未跟踪文件**。请注意,所有gitignore文件实际上只涉及git尚未跟踪的文件
git rm file
会停止跟踪它们。我找不到从repo中删除所有被忽略文件的方法。
正如您所指出的,这些文件似乎不存在于回购中。在这种情况下,您的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 .
答案 2 :(得分:15)
我遇到了完全相同的问题。我发现运行"someText" > .gitignore
创建了一个带有奇怪编码的文件。我将其改为UTF-8,然后一切正常。
答案 3 :(得分:5)
我遇到了完全相同的问题 - 即使我在第一次添加任何内容之前准备了.gitignore文件。 我发现问题出在我的忽略文件的空白处。 请勿在忽略文件中添加任何空格,然后重试。我想一切都会好起来的。 祝你好运
答案 4 :(得分:4)
检查.gitignore文件中的行结尾。在OS X仓库中,我的使用CR线路终端。切换到LF后,一切都恢复了。
perl -p -e 's/\r/\n/g' < .gitignore > .gitignore-new
mv .gitignore-new .gitignore
控制台骑师可能会想要使用sed
。
背景:我在电源故障后从Windows存储库中复制了我的工作副本。