Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Git忽略并取消跟踪文件[是的,我已经阅读了其他帖子]_Linux_Git_Gitignore_Git Untracked - Fatal编程技术网

Linux Git忽略并取消跟踪文件[是的,我已经阅读了其他帖子]

Linux Git忽略并取消跟踪文件[是的,我已经阅读了其他帖子],linux,git,gitignore,git-untracked,Linux,Git,Gitignore,Git Untracked,我在gitignore中放置了一些文件夹,但如中所述 gitignore文件指定Git应该忽略的故意未跟踪的文件。Git已经跟踪的文件不受影响 因此,我必须取消一些文件,这就是我的噩梦开始的地方 这是我的gitignore文件 $ cat .gitignore /.settings/ /.buildpath /configuration.php /administrator/cache/* /images/* /connectionOracle.php /administrator/compon

我在gitignore中放置了一些文件夹,但如中所述

gitignore文件指定Git应该忽略的故意未跟踪的文件。Git已经跟踪的文件不受影响

因此,我必须取消一些文件,这就是我的噩梦开始的地方

这是我的gitignore文件

$ cat .gitignore
/.settings/
/.buildpath
/configuration.php
/administrator/cache/*
/images/*
/connectionOracle.php
/administrator/components/com_jsecure/*
/administrator/language/en-GB/*
此文件中的最后一次修改是添加了行/images/*

要取消跟踪此文件夹,请按照{1}和{2}所述进行操作

在{1}之后

$ git update-index --assume-unchanged images/*
fatal: Unable to mark file images/02102012_planos.jpg
问题1:为什么不能取消跟踪此特定文件

在{2}之后

$ git rm --cached images/ -r
fatal: pathspec 'images' did not match any files
与特定文件的结果相同

$ git rm --cached images/20130626tabela1.jpg
fatal: pathspec 'images/20130626tabela1.jpg' did not match any files
问题2:为什么我会收到此错误消息?在这里搜索使我找到了,但正如我所说的,这些文件在/images/下被跟踪

还有樱桃蛋糕

为了验证被忽略文件的列表,我运行了以下命令

$git ls-files --others -i --exclude-standard
这给了我一个很长的文件列表,其中包括images、administrator和mpdf61文件夹。 mpdf61文件夹未在gitignore文件和info/exclude中配置

Question 3: Why the mpdf61 appears in this list?
注:“跟踪”指“在索引中”。“未跟踪”表示“不在索引中”。如果同时忽略未跟踪的文件,则其显示通常会被抑制,因此有些人更喜欢将状态为“未跟踪和已忽略”的文件称为“已忽略”,只是悄悄地掩盖其“未跟踪”状态。请注意,索引不需要与当前的
HEAD
commit匹配:这就是通过更改索引来准备下一次提交的方式。只有在您进行提交后,这些更改才会成为永久提交的一部分,并且提交的行为也会更新
HEAD


问题1:为什么不能取消跟踪此特定文件

你不能取消追踪,因为它没有被追踪。此外,
git update index——假设unchanged
首先不会取消对文件的跟踪。要更新“假定未更改”位,文件必须位于索引中,以便
更新索引
具有要更新的内容。此
致命
错误发生在第一个此类未跟踪(不在索引中)文件中。由shell扩展的
*
命名的任何后续文件都不会发生任何其他情况,因为
更新索引
在第一个错误后刚刚停止

(例如,如果运行
git update index——假设未更改的red.txt blue.jpg green.svg
,并且
red.txt
green.svg
都在索引中,而
blue.jpg
不在索引中,
update index
将标记
red.txt
的索引项,但不是
green.svg
的索引项)


问题2:为什么我会收到此错误消息

因为该文件也未被跟踪(不在索引中),因此无法从索引中删除。这:

表示索引中(现在)没有
图像/
文件。(可能有些在以前,因此在
提交头中,但在先前成功的
git rm--cached之后,不再是了;如果是这样,它们应该在
git状态中显示为“已删除”。)


这给了我一个很长的文件列表,其中包括images、administrator和mpdf61文件夹。mpdf61文件夹未在gitignore文件和info/exclude中配置

问题3:为什么mpdf61出现在此列表中

大概是因为这些文件被忽略了。有三个“标准”排除文件类,如
git ls files
文档中所示:

--排除标准

在每个目录中添加标准Git排除项:.Git/info/exclude、.gitignore,以及用户的全局排除文件

(都是我的)。您说的是“the”(如一个)gitignore文件,但可能有很多,包括目录
mpdf61
本身中的一个,并且您可能配置了
core.excludesFile


要查找哪个ignore指令正在忽略特定文件,请使用
git check ignore-v
。请参阅。

能否显示git状态的结果?
$ git update-index --assume-unchanged images/*
fatal: Unable to mark file images/02102012_planos.jpg
$ git rm --cached images/20130626tabela1.jpg
fatal: pathspec 'images/20130626tabela1.jpg' did not match any files
$ git rm --cached images/ -r
fatal: pathspec 'images' did not match any files
$ git ls-files --others -i --exclude-standard