Git 中有没有办法列出已标记为“假设未更改”的文件?

问题描述 投票:0回答:1
我遇到了

git status

git add
未检测到已更改文件的问题,与
here的回答大致相同。那里的最佳答案提到文件可能已被标记为“假设不变”,这是有道理的。

我很好奇 Git CLI 中是否有一个好方法来列出当前标有此位的索引中的所有文件。

(奖励:能够列出标有“skip-worktree”位的文件也很好~)

我已经看过的地方:

    我检查了
  • git update-index
    的文档,没有找到任何线索或进一步阅读。
  • 我还尝试
  • git help -a | grep index
    寻找任何可能能够完成我所要求的操作的与索引相关的命令。这里没有看到任何水果。
git command-line-interface
1个回答
0
投票
您可以使用

-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
    
© www.soinside.com 2019 - 2024. All rights reserved.