我刚刚按照以下步骤进行了稀疏结帐
git clone http://location/repo.git
# create .git/info/sparse-checkout file
git config --bool core.sparsecheckout true
git read-tree -mu HEAD
不幸的是,最后一步失败并显示错误消息
Entry 'path/to/file' not update. Cannot update sparse checkout
这很奇怪,因为(1)path/to/file
存在(2)另一台机器git版本1.7.1(Centos 6)上的稀疏签出过程成功。当前的机器是安装了git版本1.8.3.1的Centos 7机器。 git config --list
的输出在两台计算机上都是相同的。
答案 0 :(得分:0)
我基本上通过删除所有文件并重复相同的步骤来解决了该问题。 suggested可能是git中的错误,或者是IMO某种文件损坏。
答案 1 :(得分:0)
如果函数ie_match_stat
与统计信息不匹配,则会发生错误(对于工作树中的文件)。对ie_match_stat
的特定调用将CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE
传递给ie_match_stat
,因为CE_VALID
通常会说:工作树副本,服从缓存入口标志CE_SKIP_WORKTREE
或CE_SKIP_WORKTREE
。是最新的,即使不是。稀疏签出代码使用skip-worktree标志(stat
)标记应不签出的文件,以便Git的其余部分不会抱怨它们丢失。 / p>
因此,这里的奇怪之处是:
lstat
数据与此文件的git update-index
结果不匹配。为什么?第一个问题的答案可能是:因为用户设置了它(使用git read-tree
)。第二个答案可能是:因为用户修改了文件。因此,它们一点也不奇怪,仅表示文件与初始检出或git update-index --no-skip-worktree
操作创建的文件不匹配。如果您不关心丢失文件的内容,请随时将其删除。如果您确实关心其中的内容,请清除skip-worktree位(git diff
),然后file
应该显示出不同之处。
这方面可能存在一些错误,尤其是在这个古老的Git版本中(Git 1.8.x-当前的Git为2.22)。
答案 2 :(得分:0)
首先,在Git 2.27(2020年第二季度)中,一旦删除了文件,就可以使用git sparse-checkout reapply
第二,错误消息已更改(仍然使用Git 2.27 +):
请参见commit 5644ca2,commit 681c637,commit ebb568b,commit 22ab0b3,commit 6271d77,commit 1ac83f4,commit cd002c1,{{3} },commit 4ee5d50,commit f56f31a,commit 7af7a25,commit 30e89c1,commit 3cc7c50,commit b0a5a12,commit 72064ee,commit fa0bde4, commit d61633a的commit d7dc1e1,commit 031ba55(2020年3月27日)。
(由Elijah Newren (newren
)在Junio C Hamano -- gitster
--中合并,2020年4月29日)
commit 48eee46:使稀疏路径消息听起来像警告
作者:Derrick Stolee
签名人:伊利亚·纽伦关于稀疏路径问题的消息被表述为导致操作中止的错误,即使我们没有使操作中止。
重新编码邮件以使其在新的上下文中有意义。
这不再是:
Cannot update sparse checkout
但是:
The following paths are not up to date