Как сделать так, чтобы статус git отображал только поэтапные файлы

86

Я хотел бы получить список только поэтапных имен файлов. Я не могу найти эквивалентный флаг --name-onlyдля git statusкоманды. Какая альтернатива?

Список файлов будет передан в php -l(средство проверки синтаксиса PHP lint).

Решение: полная команда

git diff --name-only --cached | xargs -l php -l
Уорд Беккер
источник
3
Если вы запускаете эту команду вручную, похоже, что вы можете поместить ее в ловушку перед фиксацией. kernel.org/pub/software/scm/git/docs/githooks.html
MatrixFrog,

Ответы:

129

Используйте git diff --name-only(с, --cachedчтобы получить поэтапные файлы)

Бен Джексон
источник
12

Принятый ответ не позволит вам узнать, какие были изменения .

Да, если вы не специалист по проверке синтаксиса, а обычный человек с репозиторием, полным неустановленных файлов, и вы все еще хотите знать, что будет с постановочными файлами - есть еще одна команда:

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
источник
1. в моей версии (2.25.0.windows.1) перед буквами «M» и «D» стоит пробел . 2. Есть еще одно состояние - "??" что я не знаю, как интерпретировать.
itsho
@itsho пробел означает, что это не постановка. Этот ответ правильный, потому что он соответствует первому символу в строке. Если установлен первый символ, то это поэтапный файл. Если это пробел, он игнорируется.
Авнер
1
Это гениально! - для подобных вещей должен быть флаг git
Норфельдт
3

Вдохновленный ответом @ 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 '^??'"

Это может быть полезно кому-нибудь еще. Так что добавляем его в стопку ответов.

Норфельдт
источник
для последовательного окрашивания вы можете добавить .в Grep, чтобы цвет как 2 начальных символов, как: grep '^\w.', grep '^\W.',grep '^\s.'
geekley
0

для просмотра поэтапных файлов с изменениями кода

git diff --staged   

или используя --cached, который является синонимом --staged

git diff --cached

или для просмотра только имен файлов без изменения кода

git diff --staged --name-only  

git-diff руководство

скорость
источник