Jak sprawić, by status git pokazywał tylko pliki przemieszczane

86

Chciałbym otrzymać listę tylko nazw plików w fazie przejściowej. Nie mogę znaleźć odpowiednik flagę --name-onlyna git statuskomendzie. Jaka jest dobra alternatywa?

Lista plików zostanie przesłana potokiem do php -l(moduł sprawdzania składni linta PHP).

Rozwiązanie: kompletne polecenie

git diff --name-only --cached | xargs -l php -l
Ward Bekker
źródło
3
Jeśli uruchamiasz to polecenie ręcznie, wygląda na to, że możesz chcieć umieścić je w zaczepie przed zatwierdzeniem. kernel.org/pub/software/scm/git/docs/githooks.html
MatrixFrog,

Odpowiedzi:

129

Użyj git diff --name-only(z, --cachedaby pobrać pliki przemieszczane)

Ben Jackson
źródło
12

Zaakceptowana odpowiedź nie pozwoli Ci wiedzieć, jakie zmiany zaszły .

Tak, jeśli nie jesteś kontrolerem składni, ale zwykłą osobą z repozytorium pełnym plików niestabilizowanych i nadal chcesz wiedzieć, co się stanie z plikami w fazie przejściowej - jest jeszcze jedno polecenie:

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

co prowadzi do czegoś takiego:

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

Oczywiście te pliki były przygotowywane, a po usunięciu git commit:
deleted_filezostaną usunięte,
new_filezostaną dodane,
renamed_filestaną się rozszerzeniem renamed_to.

Oto wyjaśnienie wyników w krótkim formacie: https://git-scm.com/docs/git-status#_short_format

coffman21
źródło
1. w mojej wersji (2.25.0.windows.1) jest spacja przed „M” i „D”. 2. Jest też inny stan - „??” które nie jestem pewien, jak zinterpretować.
itsho
@itsho spacja wskazuje, że nie jest wystawiona. Ta odpowiedź jest poprawna, ponieważ pasuje do pierwszego znaku w linii. Jeśli ustawiony jest pierwszy znak, jest to plik pomostowy. Jeśli jest to przestrzeń, jest ignorowana.
Avner
1
To jest genialne! - powinna być flaga git dla podobnej rzeczy
Norfeldt
3

Zainspirowany odpowiedzią @ coffman21 , skonfigurowałem następujący alias w pliku.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 '^??'"

Może się przydać komukolwiek innemu. Więc dodając to do stosu odpowiedzi.

Norfeldt
źródło
dla spójnej kolorystyki można dodać .w grep, pokolorować zarówno 2 początkowych znaków, takich jak: grep '^\w.', grep '^\W.',grep '^\s.'
geekley
0

aby wyświetlić pliki przejściowe ze zmianami kodu

git diff --staged   

lub używając --cached, co jest synonimem --staged

git diff --cached

lub aby wyświetlić tylko nazwy plików bez zmian w kodzie

git diff --staged --name-only  

Podręcznik git-diff

prędkość
źródło