我想获得一个仅包含暂存文件名的列表。我找不到该命令的等效--name-only
标志git status
。什么是好的选择?
文件列表将通过管道传输到php -l
(PHP lint 语法检查器)。
解决方案:完整的命令
git diff --name-only --cached | xargs -l php -l
我想获得一个仅包含暂存文件名的列表。我找不到该命令的等效--name-only
标志git status
。什么是好的选择?
文件列表将通过管道传输到php -l
(PHP lint 语法检查器)。
解决方案:完整的命令
git diff --name-only --cached | xargs -l php -l
使用git diff --name-only
(with--cached
获取暂存文件)
接受的答案不会让您知道那里发生了哪些变化。
是的,如果您不是语法检查员,而是一个拥有充满未暂存文件的存储库的普通人,并且您仍然想知道暂存文件会发生什么 - 还有另一个命令:
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
受@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 '^??'"
它可能对其他人有用。因此,将其添加到答案堆栈中。
查看带有代码更改的暂存文件
git diff --staged
或使用 --cached 是 --staged 的同义词
git diff --cached
或仅查看文件名而不更改代码
git diff --staged --name-only
要查看暂存的文件,
git ls-files
git status --porcelain --untracked-files=all | grep '^[A|M|D|R]'
--porcelain
用于解析友好的输出--untracked-files=all
显示所有“未跟踪”的文件。显示为提交暂存的文件。grep '^[A|M|D|R]'
过滤文件的输出
^
从换行符开始匹配。一行的第一个字符表示暂存区中的状态,第二个表示工作树中的状态。A
添加M
修改的D
已删除R
重命名这是基于此评论
来自@velocity
git diff --staged
正是我想要的。如果有人想把它变成git ds
你的 bashrc 中的快捷方式,请看这个例子:
git() {
if [[ $@ == "ds" ]]; then
command git diff --staged
else
command git "$@"
fi
}