git status
或
git add
未检测到已更改文件的问题,与here的回答大致相同。那里的最佳答案提到文件可能已被标记为“假设不变”,这是有道理的。
我很好奇 Git CLI 中是否有一个好方法来列出当前标有此位的索引中的所有文件。
(奖励:能够列出标有“skip-worktree”位的文件也很好~)
我已经看过的地方:git update-index
的文档,没有找到任何线索或进一步阅读。
git help -a | grep index
寻找任何可能能够完成我所要求的操作的与索引相关的命令。这里没有看到任何水果。
-v
选项来
git ls-files
:
因此,例如,如果我有一个包含修改文件的存储库,我可能会从
-v
-- 与 -t 类似,但对标记为假设未更改的文件使用小写字母(请参阅 git-update-index(1))。
git status
中看到类似的内容:
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: examplefile
no changes added to commit (use "git add" and/or "git commit -a")
如果我将该文件标记为 --assume-unchanged
:
$ git update-index --assume-unchanged examplefile
然后git status
现在报告:
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
此时运行git ls-files -v
显示:
H README.md
h examplefile
注意h
前面的小写
examplefile
。如果我删除
assume-unchanged
设置:
$ git update-index --no-assume-unchanged examplefile
然后git ls-files -v
显示:
$ git ls-files -v
H README.md
H examplefile