Git 忽略并取消跟踪文件 [是的,我已经阅读了其他帖子]
Git ignore and untrack file [Yes I already readed the other posts]
我在我的 gitignore 中放置了一些文件夹,但如 documentation
中所述
A gitignore file specifies intentionally untracked files that Git should ignore. Files already tracked by Git are not affected
所以我必须取消跟踪一些文件,这就是我的噩梦开始的地方
这是我的 gitignore 文件
$ cat .gitignore
/.settings/
/.buildpath
/configuration.php
/administrator/cache/*
/images/*
/connectionOracle.php
/administrator/components/com_jsecure/*
/administrator/language/en-GB/*
此文件中的最后修改是添加行 /images/*
要取消跟踪此文件夹,我按照说明进行操作{1}here and {2}here
关注 {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:为什么我会收到这条错误信息?在此处搜索会将我带到 this,但正如我所说,/images/ 下的这些文件已被跟踪。
还有蛋糕樱桃
验证忽略文件列表我运行这个命令
$git ls-files --others -i --exclude-standard
这给了我一个很长的文件列表,里面有图像、管理员和 mpdf61 文件夹。
mpdf61 文件夹未在 gitignore 文件中配置,也未在 info/exclude 中配置。
Question 3: Why the mpdf61 appears in this list?
注:"tracked"表示"in the index"。 "Untracked" 表示 "not in the index"。如果未跟踪文件的显示也被忽略,通常会被抑制,因此有些人更喜欢将状态为 "both untracked and ignored" 的文件称为 "ignored",悄悄地掩饰它们的 "untracked"-ness。请注意,索引不需要匹配当前的 HEAD
提交:这就是您通过更改索引来准备 next 提交的方式。只有在您进行提交后,这些更改才会成为永久提交的一部分,并且进行该提交的行为也会更新 HEAD
。
$ git update-index --assume-unchanged images/*
fatal: Unable to mark file images/02102012_planos.jpg
Question 1: Why can't untrack this specific file?
您无法取消跟踪,因为它未被跟踪。此外,git update-index --assume-unchanged
不会首先取消跟踪文件。对于 update-index
更新 "assume unchanged" 位,文件必须在索引中,以便 update-index
有东西要更新。此 fatal
错误发生在第一个此类未跟踪(不在索引中)文件中。 shell 对 *
的扩展命名的任何后续文件都没有发生任何其他情况,因为 update-index
在第一个错误后停止。
(例如,如果您 运行 git update-index --assume-unchanged red.txt blue.jpg green.svg
,并且 red.txt
和 green.svg
都在索引中,而 blue.jpg
在索引中是 而不是 ,update-index
将标记 red.txt
的索引条目,而不是 green.svg
的索引条目。)
$ git rm --cached images/20130626tabela1.jpg
fatal: pathspec 'images/20130626tabela1.jpg' did not match any files
Question 2: Why I receive this error message?
因为该文件也未被跟踪(不在索引中),因此无法从索引中删除。这个:
$ git rm --cached images/ -r
fatal: pathspec 'images' did not match any files
表示 没有 images/
个文件(现在)在索引中。 (也许有些之前是,因此在 HEAD
提交中,但在较早的成功 git rm --cached
之后不再是;如果是这样,它们应该在 git status
中显示为 "deleted".)
$ git ls-files --others -i --exclude-standard
That give me a very long list of files inside the images, administrator and mpdf61 folder. The mpdf61 folder is not configured in the gitignore file and neither in info/exclude.
Question 3: Why the mpdf61 appears in this list?
大概是因为那些文件被忽略了。有3个"standard"排除文件类,如git ls-files
文档所示:
--exclude-standard
Add the standard Git exclusions: .git/info/exclude, .gitignore in each directory, and the user's global exclusion file.
(所有强调我的)。你说 "the" (在一个)gitignore 文件中,但可能有很多,包括目录 mpdf61
本身中的一个,你可能配置了 core.excludesFile
。
要查找忽略特定文件的忽略指令,请使用 git check-ignore -v
。参见 the git check-ignore
documentation。
我在我的 gitignore 中放置了一些文件夹,但如 documentation
中所述A gitignore file specifies intentionally untracked files that Git should ignore. Files already tracked by Git are not affected
所以我必须取消跟踪一些文件,这就是我的噩梦开始的地方
这是我的 gitignore 文件
$ cat .gitignore
/.settings/
/.buildpath
/configuration.php
/administrator/cache/*
/images/*
/connectionOracle.php
/administrator/components/com_jsecure/*
/administrator/language/en-GB/*
此文件中的最后修改是添加行 /images/*
要取消跟踪此文件夹,我按照说明进行操作{1}here and {2}here
关注 {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:为什么我会收到这条错误信息?在此处搜索会将我带到 this,但正如我所说,/images/ 下的这些文件已被跟踪。
还有蛋糕樱桃
验证忽略文件列表我运行这个命令
$git ls-files --others -i --exclude-standard
这给了我一个很长的文件列表,里面有图像、管理员和 mpdf61 文件夹。 mpdf61 文件夹未在 gitignore 文件中配置,也未在 info/exclude 中配置。
Question 3: Why the mpdf61 appears in this list?
注:"tracked"表示"in the index"。 "Untracked" 表示 "not in the index"。如果未跟踪文件的显示也被忽略,通常会被抑制,因此有些人更喜欢将状态为 "both untracked and ignored" 的文件称为 "ignored",悄悄地掩饰它们的 "untracked"-ness。请注意,索引不需要匹配当前的 HEAD
提交:这就是您通过更改索引来准备 next 提交的方式。只有在您进行提交后,这些更改才会成为永久提交的一部分,并且进行该提交的行为也会更新 HEAD
。
$ git update-index --assume-unchanged images/* fatal: Unable to mark file images/02102012_planos.jpg
Question 1: Why can't untrack this specific file?
您无法取消跟踪,因为它未被跟踪。此外,git update-index --assume-unchanged
不会首先取消跟踪文件。对于 update-index
更新 "assume unchanged" 位,文件必须在索引中,以便 update-index
有东西要更新。此 fatal
错误发生在第一个此类未跟踪(不在索引中)文件中。 shell 对 *
的扩展命名的任何后续文件都没有发生任何其他情况,因为 update-index
在第一个错误后停止。
(例如,如果您 运行 git update-index --assume-unchanged red.txt blue.jpg green.svg
,并且 red.txt
和 green.svg
都在索引中,而 blue.jpg
在索引中是 而不是 ,update-index
将标记 red.txt
的索引条目,而不是 green.svg
的索引条目。)
$ git rm --cached images/20130626tabela1.jpg fatal: pathspec 'images/20130626tabela1.jpg' did not match any files
Question 2: Why I receive this error message?
因为该文件也未被跟踪(不在索引中),因此无法从索引中删除。这个:
$ git rm --cached images/ -r fatal: pathspec 'images' did not match any files
表示 没有 images/
个文件(现在)在索引中。 (也许有些之前是,因此在 HEAD
提交中,但在较早的成功 git rm --cached
之后不再是;如果是这样,它们应该在 git status
中显示为 "deleted".)
$ git ls-files --others -i --exclude-standard
That give me a very long list of files inside the images, administrator and mpdf61 folder. The mpdf61 folder is not configured in the gitignore file and neither in info/exclude.
Question 3: Why the mpdf61 appears in this list?
大概是因为那些文件被忽略了。有3个"standard"排除文件类,如git ls-files
文档所示:
--exclude-standard
Add the standard Git exclusions: .git/info/exclude, .gitignore in each directory, and the user's global exclusion file.
(所有强调我的)。你说 "the" (在一个)gitignore 文件中,但可能有很多,包括目录 mpdf61
本身中的一个,你可能配置了 core.excludesFile
。
要查找忽略特定文件的忽略指令,请使用 git check-ignore -v
。参见 the git check-ignore
documentation。