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

War*_*ker 73 git git-status

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

文件列表将通过管道传递给php -l(PHP lint语法检查器).

解决方案:完整的命令

git diff --name-only --cached | xargs -l php -l
Run Code Online (Sandbox Code Playgroud)

Ben*_*son 115

使用git diff --name-only(--cached用于获取暂存文件)

  • 您可以使用“--name-status”代替“--name-only”,它还会显示文件是否被修改、添加或删除。 (4认同)

cof*_*n21 6

接受的答案不会让您知道在那里进行了哪些更改

是的,如果您不是语法检查程序,而是一个普通的人,而这个普通人的仓库中存储着未暂存的文件,并且您仍然想知道暂存的文件将发生什么情况,那么还有另一个命令:

git status --short | grep '^[MARCD]'
Run Code Online (Sandbox Code Playgroud)

导致类似:

M  dir/modified_file
A  dir/new_file
R  dir/renamed -> dir/renamed_to
C  dir/copied_file
D  dir/deleted_file
Run Code Online (Sandbox Code Playgroud)

显然,此文件是暂存的,在之后git commit
deleted_file将被删除,
new_file将被添加,
renamed_file将成为renamed_to

这是简短格式输出的说明:https : //git-scm.com/docs/git-status#_short_format

  • 这真是天才!- 类似的事情应该有一个 git 标志 (2认同)

vel*_*ity 5

查看包含代码更改的暂存文件

git diff --staged   
Run Code Online (Sandbox Code Playgroud)

或使用--cached其同义词--staged

git diff --cached
Run Code Online (Sandbox Code Playgroud)

或仅查看文件名而不更改代码

git diff --staged --name-only  
Run Code Online (Sandbox Code Playgroud)

git diff 手册


Nor*_*ldt 5

受到@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 '^??'"
Run Code Online (Sandbox Code Playgroud)

它可能对其他人有用。因此,将其添加到答案堆栈中。