Git稀疏签出错误“;条目';路径/to/file';不更新。无法更新稀疏签出";
我刚刚按照下面的步骤进行了稀疏签出Git稀疏签出错误“;条目';路径/to/file';不更新。无法更新稀疏签出";,git,sparse-checkout,git-sparse-checkout,Git,Sparse Checkout,Git Sparse Checkout,我刚刚按照下面的步骤进行了稀疏签出 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 这很奇怪,因为
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的输出在两台机器上都是相同的。我通过删除所有文件并重复相同的步骤基本上解决了这个问题。这可能是git中的一个bug,或者是某种文件损坏
另一个对我有效的解决方案(YMMV)。尝试反复签出有问题的目录并运行git read tree
我通过删除所有文件并重复相同的步骤基本上解决了这个问题。这可能是git中的一个bug,或者是某种文件损坏 另一个对我有效的解决方案(YMMV)。尝试反复签出有问题的目录并运行
git read tree
ie\u match\u stat
未能匹配统计信息,则会发生错误(对于工作树中的文件)。这个对ie\u match\u stat
的特殊调用通过CE\u match\u IGNORE\u VALID\CE\u match\u IGNORE\u SKIP\u WORKTREE
作为ie\u match\u stat
通常会遵循缓存条目标志CE\u VALID
或CE\u SKIP\u WORKTREE
,说:工作树副本是最新的,即使它不是最新的。稀疏签出代码使用skip worktree标志(CE_skip_worktree
)来标记不应该签出的文件,这样Git的其余部分就不会抱怨它们丢失了
因此,这里的奇怪之处是:
- 跳过工作树位是在工作树中的文件上设置的。为什么?
- 此文件的索引项缓存的
数据与此文件的stat
结果不匹配。为什么?lstat
git update index
)。第二个问题的答案可能是:因为用户修改了文件。所以它们一点也不奇怪,它们只是暗示文件与初始签出或git read tree
操作创建的文件不匹配。如果你不在乎丢失文件的内容,可以随意删除它。如果您确实关心内容,请清除跳过工作树位(git update index--no skip worktree
),然后git diff
应显示不同之处
这方面可能有一些bug,特别是在这么古老的Git版本中(Git 1.8.x-current Git是2.22)。如果函数ie_match_stat
无法匹配stat信息,则会发生错误(对于工作树中的文件)。这个对ie\u match\u stat
的特殊调用通过CE\u match\u IGNORE\u VALID\CE\u match\u IGNORE\u SKIP\u WORKTREE
作为ie\u match\u stat
通常会遵循缓存条目标志CE\u VALID
或CE\u SKIP\u WORKTREE
,说:工作树副本是最新的,即使它不是最新的。稀疏签出代码使用skip worktree标志(CE_skip_worktree
)来标记不应该签出的文件,这样Git的其余部分就不会抱怨它们丢失了
因此,这里的奇怪之处是:
- 跳过工作树位是在工作树中的文件上设置的。为什么?
- 此文件的索引项缓存的
数据与此文件的stat
结果不匹配。为什么?lstat
git update index
)。第二个问题的答案可能是:因为用户修改了文件。所以它们一点也不奇怪,它们只是暗示文件与初始签出或git read tree
操作创建的文件不匹配。如果你不在乎丢失文件的内容,可以随意删除它。如果您确实关心内容,请清除跳过工作树位(git update index--no skip worktree
),然后git diff
应显示不同之处
这方面可能有一些bug,特别是在这么古老的Git版本中(Git 1.8.x-current Git是2.22)。首先,对于Git 2.27(2020年第2季度),一旦删除了文件,就可以使用
其次,错误消息已更改(Git 2.27+):
参见,,,,,,,,,,,(2020年3月27日)作者。(于2020年4月29日合并) :使稀疏路径消息听起来像警告 审核人:Derrick Stolee
签字人:以利亚·纽伦 稀疏路径问题的消息被表述为导致操作中止的错误,即使我们没有使操作中止 改写信息,使其在新的上下文中有意义 这不再是: 但是: 首先,对于Git2.27(2020年第2季度),一旦删除了文件,就可以使用 其次,错误消息已更改(Git 2.27+): 参见,,,,,,,,,,,(2020年3月27日)作者。
(于2020年4月29日合并) :使稀疏路径消息听起来像警告 审核人:Derrick Stolee
签字人:以利亚·纽伦 稀疏路径问题的消息被表述为导致操作中止的错误,即使我们没有使操作中止 改写信息,使其在新的上下文中有意义 这不再是: 但是:
问题又出现了。相同回购不同结帐
git diff
返回一条船
Cannot update sparse checkout
The following paths are not up to date