我很少使用稀疏结账(更有可能使用浅克隆)。我几乎总是使用
.gitignore
文件。该文件有时会配置为忽略已经属于存储库的目录或文件,因此本地环境的秘密或更改不会被察觉 git status
。
如果我需要更新一个这样被忽略的模板文件,那么我以为我一直使用
git add --force
,但现在会产生:
以下路径和/或路径规范与存在的路径相匹配 在稀疏结账定义之外,所以不会 已在索引中更新
接下来是提示:
如果您打算更新此类条目,请尝试以下操作之一:
- 使用--sparse选项。
- 禁用或修改稀疏规则。
使用“git config suggest.updateSparsePath false”禁用此消息
我尝试注释掉部分内容,然后注释掉整个
.gitignore
。就这样,我再次尝试了git add --force
,也尝试了git add --sparse
。
我尝试调查
git-sparse-checkout
细节,但当git sparse-checkout list
说:时就停止了
致命:这个工作树并不稀疏
这是来自 git 2.44,但我非常习惯 git 1.8。
TL;DR;
git sparse-checkout disable
由于网上搜索失败,我又回去查看
git-sparse-checkout
的手册。我使用永恒的 bash 历史配置,所以我知道我不太可能在这台机器上使用过任何带有“稀疏”内容的命令。尽管如此,我还是决定(在备份后)尝试一下git sparse-checkout disable
。令人惊讶的是,尽管“这棵工作树并不稀疏”,但它却说:
警告:以下路径已经存在,因此尽管模式稀疏,但并未更新:
然后列出了几个文件,包括我试图更改的文件。之后,常规的
git add
就开始处理该文件了。
之后,即使再次启用
.gitignore
,对这些文件的修改也会显示在 git status
中(而在运行 git sparse-checkout disable
之前则不然)。我认为这意味着我过去必须专门为他们配置一些东西。与 sparse-checkout
相关的东西,因为 git 提示建议了它,并且我能够从中禁用该配置,但没有专门作为它的子命令来完成(并且不是从另一个带有 --sparse
标志的命令来完成),因为“稀疏”不在我的命令历史记录中(有些情况下 bash 历史记录没有被写入,所以我想这并没有完全排除)。