Dziennik SVN ma tryb „-v”, który wyświetla nazwy plików zmienionych w każdym zatwierdzeniu, tak jak:
jes5199 $ svn log -v -------------------------------------------------- ---------------------- r1 | jes5199 | 2007-01-03 14:39:41 -0800 (śr., 03 stycznia 2007) | 1 linia Zmienione ścieżki: A / AUTORZY A / KOPIOWANIE A / ChangeLog A / EWOLUCJA A / INSTALL A / MacOSX
Czy istnieje szybki sposób na uzyskanie listy zmienionych plików w każdym zatwierdzeniu w git?
git log
nie obsługuje tylko-v
przełącznika, którego tak wielu oczekuje / chce? </Odpowiedzi:
Aby uzyskać pełne nazwy ścieżek zmienionych plików:
Aby uzyskać pełne nazwy ścieżek i status zmienionych plików:
Skrócone nazwy ścieżek i diffstat zmienionych plików:
Jest o wiele więcej opcji, sprawdź dokumenty .
źródło
git log --numstat
. Zobaczgit help log
więcej opcji.git log --name-only --oneline
jest też dość sprytny - jedna kolorowa linia dla zatwierdzenia i jeden plik na linię. stackoverflow.com/a/14227496/1995714git log --name-status --find-renames
, aby wyświetlać pliki o zmienionych nazwach zamiast dodawania i usuwania.--stat
skraca długie ścieżki; szerokość jest konfigurowalna, ale zawijane histogramy są trudniejsze do odczytania. Inne formaty, takie jak--numstat
zawsze, drukują pełne ścieżki.--numstat
znajduje się w linii 946 tej strony podręcznika od git 2.22.00. To o wiele więcej opcji, niż większość ludzi potrzebuje.UWAGA: jest przestarzałe, użyj zamiast niego
git whatchanged
git log
Możesz użyć polecenia,
git whatchanged --stat
aby uzyskać listę plików, które zmieniły się w każdym zatwierdzeniu (wraz z komunikatem zatwierdzenia).Bibliografia
źródło
git show
to także świetne polecenie.To trochę tak
svn diff
, ale możesz przekazać go guidowi zatwierdzenia i zobaczyć różnicę.źródło
Jeśli chcesz uzyskać nazwy plików tylko bez reszty wiadomości zatwierdzenia, możesz użyć:
Można to następnie rozszerzyć, aby używać różnych opcji zawierających nazwę pliku:
Podczas korzystania z tej metody należy zauważyć, że na wydruku są pewne puste linie, które należy zignorować. Korzystanie z tego może być przydatne, jeśli chcesz zobaczyć pliki, które zostały zmienione w oddziale lokalnym, ale nie są jeszcze wypychane do oddziału zdalnego i nie ma gwarancji, że najnowsze pliki zdalne zostały już pobrane. Na przykład :
Pokaże wszystkie pliki, które zostały zmienione w oddziale lokalnym, ale nie zostały jeszcze scalone z odgałęzieniem głównym na pilocie.
źródło
git log --stat --pretty="format:" $branchName
. Na przykładgit log --stat --pretty="format:" $(git rev-parse --abbrev-ref HEAD)
. Podczas gdy ja to robię, oto dokładna inkantacja, która zakończyła się stosownie do mojego celu:git log --name-only --pretty="format: " master..$(git rev-parse --abbrev-ref HEAD)
Używam tego na co dzień, aby pokazać historię ze zmienionymi plikami:
Krótko mówiąc, dodaj do swojego aliasu
.gitconfig
, wykonując:źródło
Używam tego:
która wyświetla tylko listę plików i ich stan (dodany, zmodyfikowany, usunięty):
źródło
git diff --stat HEAD^!
pokazuje zmienione pliki i liczbę dodanych / usuniętych linii dla ostatniego zatwierdzenia (HEAD
).Wydaje mi się, że nie ma jednego polecenia, aby uzyskać zwięzłe dane wyjściowe składające się tylko z nazw plików oraz dodanych i usuniętych liczników linii dla kilku zatwierdzeń na raz, więc stworzyłem w tym celu własny skrypt bash:
Nazywać się np.
./changed_files 99
aby uzyskać zmiany w zwięzłej formie odHEAD
doHEAD~99
. Może być instalowany np. doless
.źródło
git diff --stat HEAD..master
aby pokazać różnicę między HEAD a master, czy nie istniało to, kiedy opublikowałeś swoją odpowiedź w 2012 roku?HEAD
imaster
. To są dwie różne rzeczy.Uważam, że następujący jest idealny sposób wyświetlania listy plików zmienionych na zatwierdzenie w zwięzłym formacie:
źródło
Podsumowanie odpowiedzi z przykładowym wynikiem
To używa lokalnego repozytorium z pięcioma prostymi zatwierdzeniami.
Kredyty dla @ CB-Bailey @ Peter-Suwara @Gaurav @ Omer-Dagan @xsor @Hazok @nrz @ptc
źródło
Innym przydatnym poleceniem byłoby, gdy
git diff-tree <hash>
skrót może być również zakresem skrótu (oznaczonym<old>..<new>
notacją). Przykład wyjściowy:Te pola to:
tryb źródłowy, tryb dest, skrót źródłowy, skrót skrótu, status, nazwa pliku
Statusy są tymi, których można się spodziewać: D (usunięty), A (dodany), M (zmodyfikowany) itd. Pełny opis znajduje się na stronie man.
źródło
Zazwyczaj używam ich, aby uzyskać dzienniki:
źródło