我想获得一个只有分阶段文件名的列表.我找不到--name-only该git 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用于获取暂存文件)
接受的答案不会让您知道在那里进行了哪些更改。
是的,如果您不是语法检查程序,而是一个普通的人,而这个普通人的仓库中存储着未暂存的文件,并且您仍然想知道暂存的文件将发生什么情况,那么还有另一个命令:
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 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)
受到@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)
它可能对其他人有用。因此,将其添加到答案堆栈中。