运行Card list
时,我经常收到多个警告:
git status
我已将此添加到我的.gitconfig:
$ git status
warning: Untracked cache is disabled on this system.
warning: Untracked cache is disabled on this system.
warning: Untracked cache is disabled on this system.
warning: Untracked cache is disabled on this system.
warning: Untracked cache is disabled on this system.
warning: Untracked cache is disabled on this system.
warning: Untracked cache is disabled on this system.
warning: Untracked cache is disabled on this system.
甚至尝试过[core]
untrackedCache = true
。然而,这没有任何帮助。
在Ubuntu Xenial上使用git v2.7.4。
导致这些警告的原因是什么?我如何摆脱它们(没有管道错误到git update-index --untracked-cache
)?
答案 0 :(得分:4)
(VonC的问题是一个关键线索:未跟踪的缓存要求工作树路径与索引中存储的路径匹配。此外,系统名称来自uname
的{{1}}字段那里也必须匹配;这会影响通过网络文件系统(如NFS或SMB)管理的文件。)
由于系统上禁用了未跟踪的缓存并导致出现警告,因此您可能不希望尝试 en 。换句话说,请将utsname
设置为未设置,或将其设置为core.untrackedCache
。但是,false
是Git版本2.8.0中的新设置;如果你的Git是2.7.4你就没有它。
运行core.untrackedCache
强制启用该设置(然后生成所有这些错误消息)。您可以使用git update-index --untracked-cache
强制关闭它。唯一不好的结果是,当禁用未跟踪的缓存时,git update-index --no-untracked-cache
可能会运行得更慢(可能显着更慢)。
请注意,从2.8.0开始,Git建议在启用未跟踪的缓存(使用git status
或git update-index --test-untracked-cache
)之前运行--untracked-cache
。另请注意,如果此core.untrackedCache = true
设置设置为core
或true
,则false
设置只需将复制到索引时索引已更新(使用core.untrackedCache
)。它实际上是控制事物的索引设置。使用默认值(未设置)或将其设置为git update-index
会告诉Git单独保留未跟踪缓存设置。
您还可以将环境变量keep
(设置为任意值)设置为禁用未跟踪缓存的使用,而不管索引中的当前设置如何。 (此代码似乎也在2.7.4中。)无论索引中的设置如何,这都将绕过警告,而不使用未跟踪的缓存。
答案 1 :(得分:0)
如何摆脱它们
注意:至少使用Git 2.17(2018年第二季度),您应该会看到更少的消息 当唯一改变的东西写出来时写出索引文件 是未跟踪的缓存信息往往是浪费,这有 已经过优化。
commit fc9ecbe见Ben Peart (benpeart
)(2018年2月5日)
(由Junio C Hamano -- gitster
--合并于commit cdda65a,2018年3月8日)
dir.c
:不要将索引标记为脏,以便更改未跟踪的缓存未跟踪的缓存将其当前状态保存在
UNTR
索引扩展中。 目前,任何更改为该状态会导致索引被标记为脏 并写到磁盘 不幸的是,写出索引的成本可能会超过使用未跟踪缓存所节省的成本 由于它是一个可以从工作目录的当前状态更新的缓存,因此没有功能要求在每个对未跟踪缓存的更改时写出索引。更新未跟踪的缓存逻辑,以便它不再强制索引 写入磁盘除了打开扩展名的情况或 关闭。
当其他一些git
命令要求将索引写入磁盘时, 未跟踪的缓存将利用它来保存它的更新状态。当查看
git
命令的常见序列(例如状态后跟add,commit等)时,这会带来性能提升。