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

问题描述 投票:0回答:8

我想获取仅包含暂存文件名的列表。我找不到

--name-only
命令的
git status
的等效标志。有什么好的选择吗?

文件列表将通过管道传输到

php -l
(PHP lint 语法检查器)。

解决方案:完整命令

git diff --name-only --cached | xargs -l php -l
git git-status
8个回答
161
投票

使用

git diff --name-only
(与
--cached
一起获取暂存文件)


27
投票

接受的答案不会让您知道有什么样的变化

是的,如果您不是语法检查者,而是一个拥有充满未暂存文件的存储库的普通人,并且您仍然想知道暂存文件会发生什么 - 还有另一个命令:

git status --short | grep '^[MARCD]'

这会导致类似的结果:

M  dir/modified_file
A  dir/new_file
R  dir/renamed -> dir/renamed_to
C  dir/copied_file
D  dir/deleted_file

显然,这个文件是上演的,并且在

git commit
之后:
deleted_file
将被删除,
new_file
将会添加,
renamed_file
将变成
renamed_to

这里是短格式输出的解释:https://git-scm.com/docs/git-status#_short_format


9
投票

受到@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 '^??'"

alias gst="git status"
alias staged="git status --short | grep '^\w.'"
alias unstaged="git status  --short | grep '^\W.'"
alias unstaged-tracked="git status  --short | grep '^\s.'"
alias untracked="git status --short | grep '^??'"

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


5
投票

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

git diff --staged   

或使用

--cached
,它是
--staged

的同义词
git diff --cached

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

git diff --staged --name-only  

git-diff 手册


2
投票

要查看哪些文件已暂存,

git ls-files

2
投票

仅显示暂存文件

git status --porcelain --untracked-files=all | grep '^[A|M|D|R]'
  • --porcelain
    用于解析友好的输出
  • --untracked-files=all
    显示所有“未跟踪”文件。显示暂存以供提交的文件。
  • grep '^[A|M|D|R]'
    过滤输出中的文件
    • ^
      从换行符开始匹配。一行的第一个字符表示暂存区域中的状态,第二个字符表示工作树中的状态。
    • A
      已添加
    • M
      已修改
    • D
      已删除
    • R
      已更名

这是基于此评论


0
投票

来自@velocity

git diff --staged
正是我想要的。如果有人希望将其变成 bashrc 中的
git ds
之类的快捷方式,请参阅此示例:

git() {
    if [[ $@ == "ds" ]]; then
        command git diff --staged
    else
        command git "$@"
    fi
}

0
投票

可以使用git命令

$ git diff --name-only --staged

此命令将列出仅已暂存的文件的名称

© www.soinside.com 2019 - 2024. All rights reserved.