Działa to również w przypadku git show. git show --name-only SHA1.
August Lilleaas,
78
git diff --name-status [TAG|SHA1]pokazuje, jakie operacje wykonano również na plikach
Rebbot
2
możesz także zrobić: git diff - tylko nazwa HEAD @ {3} HEAD @ {0} dla dokładnych zatwierdzeń, które chcesz porównać.
b01,
7
@ AugustLilleaas faktycznie korzystający z show pokaże tylko 2 konkretne zmiany, jeśli masz między nimi 2, zostaną one pominięte
Chris
4
Jak wspomniano poniżej, git diff --name-statuswydaje się , że nie chce wyświetlać dodanych plików. @sschuberth wskazał git show, który wydaje się działać prawidłowo dla mnie git show --pretty=format: --name-status. Samo robienie git show --name-statusdaje trochę więcej informacji, ale wciąż jest ładne i gęste ... to będzie moje nowe polecenie goto;)
travc
416
git diff --name-status [SHA1 [SHA2]]
jest jak - - tylko nazwa, z tym wyjątkiem, że otrzymujesz prosty prefiks informujący o tym, co się stało z plikiem (zmodyfikowany, usunięty, dodany ...)
git log --name-status --oneline [SHA1..SHA2]
jest podobny, ale zatwierdzenia są wyświetlane po komunikacie zatwierdzenia, dzięki czemu można zobaczyć, kiedy plik został zmieniony.
jeśli jesteś zainteresowany tym, co stało się z niektórymi plikami / folderami, możesz dołączyć -- <filename> [<filename>...]do git logwersji.
jeśli chcesz zobaczyć, co się stało dla pojedynczego zatwierdzenia, nazwij to SHA1, a następnie zrób git log --name-status --oneline [SHA1^..SHA1]
Flagi statusu pliku:
M zmodyfikowany - Plik został zmodyfikowany
C kopiuj-edytuj - Plik został skopiowany i zmodyfikowany
R Zmień nazwę-edytuj - Plik został zmieniony i zmodyfikowany
A Dodano - Plik został dodany
D usunięty - Plik został usunięty
U unmerged - Plik ma konflikty po scaleniu
Tak się składa, że powiedziałem git diff --name-status i dało to „dodany plik”.
aartist
1
W przypadku git log musi mieć dwie kropki między SHA, jak SHA1..SHA2, a druga SHA nie jest opcjonalna, więc powinna wyglądać tak: git log - nazwa-status --online [SHA1 .. SHA2]
twasbrillig
Czy istnieje sposób na wykluczenie niektórych plików / niektórych typów plików?
sierpień
3
Ta --relative[=<path>]opcja może ci pomóc, nie jestem pewien. W przeciwnym razie zawsze będzie | erep -v '(.tmp|.foo|.dontwant)$'...
artfulrobot
80
Wygląda na to, że nikt nie wspomniał o przełączniku --stat:
To było naprawdę przydatne! Chciałbym móc po prostu powiedzieć git diffstatus masterlub coś podobnego, co wyzwala powyższe.
oma
3
Lub git show --pretty=format: --name-only origin/master...
sschuberth
Być może nie będziesz w stanie zrobić z niego aliasu git, ale zdecydowanie możesz umieścić go w swoim .bashrc.
Fred
3
Lub jeszcze prościej: git diff --name-only HEAD...master(zwróć uwagę na trzy kropki). Szczegółowe wyjaśnienie znajduje się tutaj .
ostrokach
1
Wygląda na przeważnie poprawną odpowiedź! Prosty git diff --name-only master..branchnie odpowiada liście PR github. W ten sposób bardziej precyzyjny. Ale w każdym razie mam 173 pliki w chan kontra 171 w github PR. (bez merge-basemam 228 vs 171)
x'ES
21
Aby uzupełnić odpowiedź @ artfulrobot, jeśli chcesz pokazać zmienione pliki między dwoma oddziałami:
git diff --name-status mybranch..myotherbranch
Uważaj na pierwszeństwo. Jeśli najpierw umieścisz nowszą gałąź, wyświetli się ona jako usunięta, a nie dodana.
Regeksy są fajne i naprawdę mogą zrobić prawie wszystko. W tym przypadku jest jednak także --diff-filterta funkcja, która daje natywną funkcjonalność, co oznacza mniejszą szansę na niepoprawne wyniki (np. Fałszywe alarmy)
Jasper
8
Dodaj poniższy alias do swojego ~/.bash_profile, a następnie uruchom source ~/.bash_profile; teraz, kiedy chcesz zobaczyć zaktualizowane pliki w ostatnim zatwierdzeniu, uruchom, showfilesz repozytorium git.
alias showfiles='git show --pretty="format:" --name-only'
git log --pretty=onelinedaje mi tylko SHA i komunikat zatwierdzenia za pomocą git 2.10.1
cholera
3
Jak powiedział artfulrobot w swojej odpowiedzi:
git diff --name-status [SHA1 [SHA2]]
Mój przykład:
git diff --name-status 78a09k12067c24d8f117886c4723ccf111af4997
4b95d595812211553070046bf2ebd807c0862cca
M views/layouts/default.ctp
M webroot/css/theme.css
A webroot/img/theme/logo.png
Na podstawie git diff --name-statusnapisałem rozszerzenie git git-diffview, które renderuje hierarchiczny widok drzewa tego, co zmieniło się między dwiema ścieżkami.
Odpowiedzi:
gdzie wystarczy podać wystarczającą ilość SHA, aby zidentyfikować zatwierdzenia. Możesz także zrobić na przykład
aby zobaczyć różnice między dziesiątym ostatnim zatwierdzeniem a piątym ostatnim (lub tak).
źródło
git show --name-only SHA1
.git diff --name-status [TAG|SHA1]
pokazuje, jakie operacje wykonano również na plikachgit diff --name-status
wydaje się , że nie chce wyświetlać dodanych plików. @sschuberth wskazałgit show
, który wydaje się działać prawidłowo dla mniegit show --pretty=format: --name-status
. Samo robieniegit show --name-status
daje trochę więcej informacji, ale wciąż jest ładne i gęste ... to będzie moje nowe polecenie goto;)jest jak - - tylko nazwa, z tym wyjątkiem, że otrzymujesz prosty prefiks informujący o tym, co się stało z plikiem (zmodyfikowany, usunięty, dodany ...)
jest podobny, ale zatwierdzenia są wyświetlane po komunikacie zatwierdzenia, dzięki czemu można zobaczyć, kiedy plik został zmieniony.
jeśli jesteś zainteresowany tym, co stało się z niektórymi plikami / folderami, możesz dołączyć
-- <filename> [<filename>...]
dogit log
wersji.jeśli chcesz zobaczyć, co się stało dla pojedynczego zatwierdzenia, nazwij to SHA1, a następnie zrób
git log --name-status --oneline [SHA1^..SHA1]
Flagi statusu pliku:
M zmodyfikowany - Plik został zmodyfikowany
C kopiuj-edytuj - Plik został skopiowany i zmodyfikowany
R Zmień nazwę-edytuj - Plik został zmieniony i zmodyfikowany
A Dodano - Plik został dodany
D usunięty - Plik został usunięty
U unmerged - Plik ma konflikty po scaleniu
źródło
--relative[=<path>]
opcja może ci pomóc, nie jestem pewien. W przeciwnym razie zawsze będzie| erep -v '(.tmp|.foo|.dontwant)$'
...Wygląda na to, że nikt nie wspomniał o przełączniku
--stat
:Istnieje również
--numstat
i
--shortstat
źródło
Ale żeby zobaczyć, jak zmieniły się pliki między twoją gałęzią a jej wspólnym przodkiem z inną gałęzią (powiedz origin / master):
źródło
git diffstatus master
lub coś podobnego, co wyzwala powyższe.git show --pretty=format: --name-only origin/master..
.git diff --name-only HEAD...master
(zwróć uwagę na trzy kropki). Szczegółowe wyjaśnienie znajduje się tutaj .git diff --name-only master..branch
nie odpowiada liście PR github. W ten sposób bardziej precyzyjny. Ale w każdym razie mam 173 pliki w chan kontra 171 w github PR. (bezmerge-base
mam 228 vs 171)Aby uzupełnić odpowiedź @ artfulrobot, jeśli chcesz pokazać zmienione pliki między dwoma oddziałami:
Uważaj na pierwszeństwo. Jeśli najpierw umieścisz nowszą gałąź, wyświetli się ona jako usunięta, a nie dodana.
Dodanie
grep
puszki uściśla rzeczy:To pokaże tylko dodane pliki
myotherbranch
.źródło
--diff-filter
ta funkcja, która daje natywną funkcjonalność, co oznacza mniejszą szansę na niepoprawne wyniki (np. Fałszywe alarmy)Dodaj poniższy alias do swojego
~/.bash_profile
, a następnie uruchomsource ~/.bash_profile
; teraz, kiedy chcesz zobaczyć zaktualizowane pliki w ostatnim zatwierdzeniu, uruchom,showfiles
z repozytorium git.źródło
git config --global alias.showfiles 'show --pretty="format:" --name-only'
zrobićgit showfiles
.Spowoduje to wyświetlenie zmian w plikach:
źródło
Zwróć też uwagę, jeśli chcesz zobaczyć zmienione pliki między ostatnim zatwierdzeniem a poprzednim. Działa to dobrze:
git show --name-only
źródło
Użyj git log --pretty = oneline> C: \ nazwa_pliku.log
który rejestruje tylko oneline (--pretty = oneline), który jest nazwą zmienionego pliku. Również zapisuje wszystkie szczegóły w pliku wyjściowym.
źródło
git log --pretty=oneline
daje mi tylko SHA i komunikat zatwierdzenia za pomocą git 2.10.1Jak powiedział artfulrobot w swojej odpowiedzi:
Mój przykład:
źródło
Tylko dla kogoś, kto musi skupić się tylko na plikach Java, oto moje rozwiązanie:
źródło
Poniższe działa dla mnie dobrze:
$ git show --name-only --format=tformat: SHA1..SHA2
Można go również użyć z jednym zatwierdzeniem:
git show --name-only --format=tformat: SHA1
który jest przydatny do użycia w Jenkins, gdzie masz Listę SHA zmian i chcesz iterować nad nimi, aby zobaczyć, które pliki zostały zmienione.
Jest to podobne do kilku powyższych odpowiedzi, ale użycie
tformat:
zamiastformat:
usuwa przestrzeń separatora między zatwierdzeniami.źródło
Na podstawie
git diff --name-status
napisałem rozszerzenie git git-diffview, które renderuje hierarchiczny widok drzewa tego, co zmieniło się między dwiema ścieżkami.źródło