“git ls-files”是否可以列出缓存中已更改的文件

oxcyiej7  于 2023-11-15  发布在  Git
关注(0)|答案(2)|浏览(155)

我需要一个脚本来处理所有的阶段,修改和未跟踪的文件(与荣誉忽略)。
由于git ls-files --cached在其输出中列出了所有文件,无论是否更改,我必须合并两个不同命令的输出以获得完整列表:

# Untracked.
git ls-files --others --exclude-standard

# Modified and cached.
git diff HEAD --name-only

字符串
或包含在git ls-files中修改

# Modified and untracked
git ls-files --others --modified --exclude-standard

# Cached
git diff --cached --name-only


我可以只使用git ls-files获得完整列表吗?

lc8prwob

lc8prwob1#

不,不是git ls-files
git status运行两个diff,一个是HEAD-vs-index,一个是index-vs-work-tree,后者还收集未跟踪的文件(如果您使用默认值或-uall),因此您可以从一个命令(git status)获得相同类型的信息,但不能从git ls-files获得。
出于编程目的,您需要git status --porcelain -uall -z(或者不需要-z,这取决于您打算如何处理输出)。
(转载自Torek的评论)

zlwx9yxi

zlwx9yxi2#

1.对于已修改的文件:git ls-files --modified
1.对于已删除的文件:git ls-files --deleted

相关问题