我的项目中有3个文件夹。其中2个检测到git status
的更改,但第三个,Server/
,没有。git update-index --no-assume-unchanged Server/
返回Ignoring path Server/
个
奇怪的是,git update-index --assume-unchanged Server/
返回Ignoring path Server/
也是。
在git status之后,更改仍然不会显示。但是,运行git update-index --really-refresh
会显示它们;我如何才能让git status
像正常一样显示它们?
1条答案
按热度按时间omqzjyyz1#
一个以
/
结尾的路径,比如Server/
,永远不能在索引中命名一个 * 文件 *。这样的路径命名一个目录(或者文件夹,如果你喜欢这个术语的话)。与许多面向用户的命令不同,
git update-index
是一个非常基本的管道命令,不能通过命名目录来操作目录中的所有文件。因此,如果您给予目录的名称-即使是不存在的目录-它也会像上面那样抱怨:字符串
尽管完全缺少
abcdefg/
文件,甚至没有abcdefg
目录:型
如果您在
Server/
中确实有文件,并且希望在索引中当前存在的这些文件的条目上设置这些索引标志,则必须单独命名每个此类文件:型
要设置或清除每个索引条目上的assume-unchanged标志,您(或我)必须为每个这样的文件调用一次
git update-index
。有112个这样的文件,因此需要112次对git update-index
的调用。(直接使用
git update-index
,这通常是你做错了什么的信号。如果你设置了许多假定不变的标志,那可能是真实的错误;你必须单独取消设置它们来修复它。我确实写了自己的Python script来处理这类事情,一部分是作为一个实验,一部分是当我处理一个糟糕的情况时,我经常设置和清除标志。整体情况现在已经纠正,但我仍然有脚本。)