Git状态未检测到更改,但是“ git update-index --really-refresh”确实

我的项目中有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状态后,更改仍然不显示。但是,运行git update-index --really-refresh会显示它们。如何使git status像平常一样显示它们?

谢谢!

as25863066 回答:Git状态未检测到更改,但是“ git update-index --really-refresh”确实

/结尾的 路径,例如Server/,永远不能在索引中命名文件。这样的路径将目录命名为目录(或文件夹,如果您愿意的话)。

与许多面向用户的命令不同,git update-index是一个非常基本的管道命令,仅通过命名目录就无法对目录中的所有文件进行操作。因此,如果您确实给它指定了一个目录名,即使它不存在,它也会像上面这样抱怨:

$ git update-index --no-assume-unchanged abcdefg/
Ignoring path abcdefg/

尽管完全缺少abcdefg/个文件,甚至缺少abcdefg目录:

$ file abcdefg/
abcdefg/: cannot open `abcdefg/' (No such file or directory)

如果您确实在Server/中有文件,并希望在索引中当前存在的这些文件的条目上设置这些索引标志,则必须分别命名每个这样的文件:

$ git ls-files --stage builtin/
100644 dd18e5c9b67038307401e8d33970d5c424c03cb7 0       builtin/add.c
100644 761cac39e02a7f45dd7f95f05d31e0ad373be214 0       builtin/am.c
100644 da413ae0d178b53d6b1e6c193577c23923255245 0       builtin/annotate.c
100644 3f099b960565ff2944209ba514ea7274dad852f5 0       builtin/apply.c
[many more lines,snipped]

要在每个这些索引条目上设置或清除假定不变的标志,您(或I)将必须为每个此类文件调用一次git update-index。有112个此类文件,因此需要对git update-index进行112次调用。

(直接直接使用git update-index几乎总是表明您做错了。如果您设置了许多假设不变的标志,那可能是真正的错误;您必须取消设置它们我确实写了自己的Python script来处理这类事情,部分是作为实验,部分是当我要处理经常设置和清除标志的恶劣情况时。现在已纠正,但我仍然有脚本。)

本文链接:https://www.f2er.com/3141840.html

大家都在问