如何让git status只显示暂存文件

时间:2010-12-24 07:52:02

标签: git git-status

我想获得一个只有分阶段文件名的列表。我找不到--name-only命令的git status的等效标志。什么是好的选择?

文件列表将通过管道传送到php -l(PHP lint语法检查程序)。

解决方案:完整的命令

git diff --name-only --cached | xargs -l php -l

6 个答案:

答案 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  

git-diff manual