W przypadku plików zmienionych między podanym SHA a bieżącym zatwierdzeniem:
git diff --name-only <starting SHA> HEAD
lub jeśli chcesz dołączyć zmienione, ale jeszcze niezatwierdzone pliki:
git diff --name-only <starting SHA>
Mówiąc bardziej ogólnie, następująca składnia zawsze powie ci, które pliki zmieniły się między dwoma zatwierdzeniami (określone przez ich SHA lub inne nazwy):
a jeśli chcesz poznać pliki zmodyfikowane dla konkretnego zatwierdzenia, zrób:git diff --name-only <SHA> <SHA>^
thebugfinder
3
Użycie --name-statusflagi zamiast flagi --name-onlyjest przydatne, aby uzyskać listę plików i zobaczyć ich stan modyfikacji, na przykład Dodane lub Zmodyfikowane.
Thane Plummer
@Amber powinien wspomnieć o notatkach @Thane Plummera, które --name-statuspokazują, co się z nimi stało
Zoltán Süle,
64
Aby znaleźć nazwy wszystkich plików zmodyfikowanych od ostatniego zatwierdzenia:
git diff --name-only
Lub (aby uzyskać więcej informacji, w tym nieśledzone pliki):
Aby wyświetlić wszystkie nieśledzone pliki (te wymienione obok git status, nie uwzględniając ignorowanych plików):
git ls-files --other --exclude-standard
Jeśli używasz tego w skrypcie powłoki, i chcesz programowo sprawdzić, czy te polecenia wrócił niczego, będziesz zainteresowany git diff„s --exit-codeopcja.
diff-filter = [(A | C | D | M | R | T | U | X | B)… [*]]
Wybierz tylko pliki, które są Dodane (A), Skopiowane (C), Usunięte (D), Zmodyfikowane (M), Zmienione (R), mają zmieniony ich typ (np. Zwykły plik, łącze symboliczne, podmoduł,…), nie są scalone (U), są nieznane (X) lub ich parowanie zostało przerwane (B). Można użyć dowolnej kombinacji znaków filtru (w tym żadnego). Po dodaniu * (wszystko lub brak) do kombinacji wszystkie ścieżki są wybierane, jeśli istnieje plik, który spełnia inne kryteria porównania; jeśli nie ma pliku spełniającego inne kryteria, nic nie jest wybierane.
Również te wielkie litery można zmniejszyć, aby wykluczyć. Np. --Diff-filter = ad wyklucza dodane i usunięte ścieżki.
Jeśli chcesz wyświetlić również status (np. A / M), zmień --name-onlyna --name-status.
Zauważ, że może to być używane tylko do zmian niestacjonarnych, więc nie jest przydatne w przypadku `` plików, które zmieniły się między dwoma zatwierdzeniami Git ''
John Vandenberg
2
Dzięki temu git showmożesz uzyskać podobny wynik. Aby spojrzeć na zatwierdzenie (jak wygląda na git logwidoku) z listą plików zawartych w, użyj:
git show --name-only [commit-id_A]^..[commit-id_B]
Gdzie [commit-id_A]jest początkowe zatwierdzenie i [commit-id_B]ostatnie zatwierdzenie, niż chcesz pokazać.
Specjalna uwaga z ^symbolem. Jeśli tego nie umieścisz, informacja commit-id_A nie zostanie wdrożona.
Jeśli chcesz sprawdzić zmienione pliki, musisz zadbać o wiele drobnych rzeczy, na przykład, jeśli chcesz sprawdzić, który z plików został zmieniony, po prostu wpisz
stan git - pokaże pliki ze zmianami
jeśli chcesz wiedzieć, jakie zmiany mają zostać wprowadzone, możesz to sprawdzić na różne sposoby,
git diff - pokaże wszystkie zmiany we wszystkich plikach
dobrze jest tylko wtedy, gdy modyfikowany jest tylko jeden plik
Odpowiedzi:
W przypadku plików zmienionych między podanym SHA a bieżącym zatwierdzeniem:
lub jeśli chcesz dołączyć zmienione, ale jeszcze niezatwierdzone pliki:
Mówiąc bardziej ogólnie, następująca składnia zawsze powie ci, które pliki zmieniły się między dwoma zatwierdzeniami (określone przez ich SHA lub inne nazwy):
źródło
git diff --name-only <SHA> <SHA>^
--name-status
flagi zamiast flagi--name-only
jest przydatne, aby uzyskać listę plików i zobaczyć ich stan modyfikacji, na przykład Dodane lub Zmodyfikowane.--name-status
pokazują, co się z nimi stałoAby znaleźć nazwy wszystkich plików zmodyfikowanych od ostatniego zatwierdzenia:
Lub (aby uzyskać więcej informacji, w tym nieśledzone pliki):
źródło
Aby wyświetlić listę wszystkich niestacjonarnych, śledzonych zmienionych plików:
Aby wyświetlić wszystkie etapowe śledzone zmienione pliki:
Aby wyświetlić listę wszystkich przemieszczonych i niestacjonarnych śledzonych zmienionych plików:
Aby wyświetlić wszystkie nieśledzone pliki (te wymienione obok
git status
, nie uwzględniając ignorowanych plików):Jeśli używasz tego w skrypcie powłoki, i chcesz programowo sprawdzić, czy te polecenia wrócił niczego, będziesz zainteresowany
git diff
„s--exit-code
opcja.źródło
Kiedy dodałem / zmodyfikowałem / usunąłem wiele plików (od ostatniego zatwierdzenia), lubię patrzeć na te modyfikacje w porządku chronologicznym.
Do tego używam:
Aby wyświetlić wszystkie pliki niestacjonarne:
Aby uzyskać datę ostatniej modyfikacji dla każdego pliku:
Chociaż ruvim sugeruje w komentarzach :
Aby posortować je od najstarszych do nowszych:
Alias ułatwia korzystanie z:
Lub (krócej i wydajniej, dzięki Ruvim )
Na przykład:
Teraz mogę przejrzeć swoje modyfikacje, od najstarszych do nowszych.
źródło
xargs
i jednego połączenia zstat
? Pełnygit ls-files -z --other --modified --exclude-standard | xargs -0 stat -c '%y %n' -- | sort
Potrzebuję listy plików, które zmieniły zawartość między dwoma zatwierdzeniami (tylko dodane lub zmodyfikowane), więc użyłem:
Różne opcje filtra różnicowego z dokumentacji git diff :
Jeśli chcesz wyświetlić również status (np. A / M), zmień
--name-only
na--name-status
.źródło
Listę niestandowanych modyfikacji można uzyskać za pomocą
git status
igrep
polecenia jak poniżej. Coś takiegogit status -s | grep M
:źródło
Dzięki temu
git show
możesz uzyskać podobny wynik. Aby spojrzeć na zatwierdzenie (jak wygląda nagit log
widoku) z listą plików zawartych w, użyj:Gdzie
[commit-id_A]
jest początkowe zatwierdzenie i[commit-id_B]
ostatnie zatwierdzenie, niż chcesz pokazać.Specjalna uwaga z
^
symbolem. Jeśli tego nie umieścisz, informacja commit-id_A nie zostanie wdrożona.źródło
Jeśli chcesz sprawdzić zmienione pliki, musisz zadbać o wiele drobnych rzeczy, na przykład, jeśli chcesz sprawdzić, który z plików został zmieniony, po prostu wpisz
stan git - pokaże pliki ze zmianami
jeśli chcesz wiedzieć, jakie zmiany mają zostać wprowadzone, możesz to sprawdzić na różne sposoby,
git diff - pokaże wszystkie zmiany we wszystkich plikach
dobrze jest tylko wtedy, gdy modyfikowany jest tylko jeden plik
a jeśli chcesz sprawdzić konkretny plik, użyj
git diff
źródło