我想获得一个只有分阶段文件名的列表。我找不到--name-only
命令的git status
的等效标志。什么是好的选择?
文件列表将通过管道传送到php -l
(PHP lint语法检查程序)。
解决方案:完整的命令
git diff --name-only --cached | xargs -l php -l
答案 0 :(得分:109)
使用git diff --name-only
(使用--cached
获取暂存文件)
答案 1 :(得分:4)
接受的答案不会让你知道有什么样的变化。
是的,如果你不是语法检查程序,而是一个普通人,其存储库中装满了非分页文件,而你仍然想知道分阶段文件会发生什么 - 还有另一个命令:
git status --short | grep '^[RAD]'
导致类似:
D dir/deleted_file
A dir/new_file
R dir/renamed -> dir/renamed_to
显然,这些文件已经暂存,并且在git commit
之后:
deleted_file
将被删除,
将添加new_file
,
renamed_file
将成为renamed_to
。
以下是短格式输出的说明:https://git-scm.com/docs/git-status#_short_format
答案 2 :(得分:4)
受@coffman21的回答启发,我在.zshrc
中设置了以下别名
alias gst="git status"
alias gst-staged="git status --short | grep '^\w.'"
alias gst-unstaged="git status --short | grep '^\W.'"
alias gst-unstaged-tracked="git status --short | grep '^\s.'"
alias gst-untracked="git status --short | grep '^??'"
它可能对其他任何人有用。因此,将其添加到答案堆栈中。
答案 3 :(得分:2)
要查看哪些文件已暂存,
git ls-files
答案 4 :(得分:1)
git status --porcelain --untracked-files=all | grep '^[A|M|D|R]'
--porcelain
用于解析友好的输出--untracked-files=all
显示所有“未跟踪”的文件。显示准备提交的文件。grep '^[A|M|D|R]'
过滤输出
^
从换行开始匹配。一行的第一个字符表示暂存区中的状态,第二个字符表示工作树中的状态。A
添加了M
已修改D
已删除R
重命名这是基于this comment
答案 5 :(得分:0)
查看具有代码更改的暂存文件
git diff --staged
或使用--staged的同义词--cached
git diff --cached
或仅查看没有更改代码的文件名
git diff --staged --name-only