我需要一个脚本来处理所有的阶段,修改和未跟踪的文件(与荣誉忽略)。
由于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
获得完整列表吗?
2条答案
按热度按时间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的评论)
zlwx9yxi2#
1.对于已修改的文件:
git ls-files --modified
1.对于已删除的文件:
git ls-files --deleted