Szukam prostego git
polecenia, które zapewnia ładnie sformatowaną listę wszystkich plików, które były częścią zatwierdzenia podanego przez skrót (SHA1), bez żadnych dodatkowych informacji.
Próbowałem:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Chociaż zawiera listę plików, zawiera również niepożądane informacje o różnicach dla każdego z nich.
Czy istnieje inne git
polecenie, które dostarczy tylko potrzebną listę, aby uniknąć parsowania jej z git show
wyniku?
git log --until 2013-05-21 --pretty="short" --name-only
z dobrym efektem.n
zatwierdzeń domaster
:git diff-tree --name-status -r @{3} master
git diff --name-only master
- Aby wyświetlić WSZYSTKIE zmienione pliki w bieżącej gałęzi, w porównaniu do gałęzi głównej.Odpowiedzi:
Preferowany sposób (ponieważ jest to polecenie hydrauliczne ; ma być programowe):
Inna droga (mniej preferowana dla skryptów, ponieważ jest to polecenie porcelanowe ; przeznaczone do obsługi przez użytkownika)
--no-commit-id
tłumi popełnić wyjście ID.--pretty
Argument określa pusty ciąg formatu aby uniknąć cruft na początku.--name-only
pokazy argumentów tylko nazwy plików, które zostały dotknięte (Dzięki Hank). Użyj--name-status
zamiast tego, jeśli chcesz zobaczyć, co się stało z każdego pliku ( D eleted, M odified, dded)-r
Argument jest rekursja do podstrumieni drzewźródło
diff-tree
nie będzie działać, gdy spojrzymy na główny zatwierdzenie.--name-only
opcji--name-status
da bardziej przejrzyste podsumowanie.git log --name-only -n 1 <hash>
Ostatnim zatwierdzeniem byłoby:git log --name-only -n 1 HEAD~1..HEAD
git show
to „porcelana” (przeznaczona do obsługi przez użytkownika) igit diff-tree
„hydraulika” (przeznaczona do użycia programowego, np. ze skryptów). Interfejs tego pierwszego może się zmieniać z czasem (więc opiekunowie gitów mogą upaść,--name-only
chociaż nie sądzę, że by to zrobili ) ze względów użyteczności, podczas gdy interfejs dla tych drugich będzie utrzymywany tak stabilny, jak to możliwe ze względu na kompatybilność.Jeśli chcesz uzyskać listę zmienionych plików:
Jeśli chcesz uzyskać listę wszystkich plików w zatwierdzeniu, możesz użyć
źródło
git ls-tree --name-only HEAD
( wymagany jest parametr <commit-ish> ; w tym przykładzie jest to HEAD) działa dla mnie z wersją git 1.6.4.3--no-commit-id
aby uniknąć drukowania SHA1, w ten sposób:git diff-tree --no-commit-id --name-only -r <commit-ish>
-r
/-t
opcji, prawda? Ponieważ drzewo różnic obsługuje zarówno zmodyfikowane, jak i dodane pliki. Jeśli chcesz wyświetlić listę wszystkich (dodanych) plików, użyjgit diff-tree -r --name-only --no-commit-id --diff-filter=A <commit-ish>
Zakładam, że
gitk
nie jest to pożądane. W takim przypadku spróbujgit show --name-only <sha>
.źródło
--name-status
.gitk
jest naprawdę dobrym sposobem na przejrzenie plików i wyświetlenie pliku, w którym znajduje się diff. np. Kod sprawdzający, czy potwór zatwierdził od partnera.Osobiście używam kombinacji --stat i --oneline z poleceniem show :
Jeśli nie lubią / chcą statystyki dodawanie / usuwania, można zastąpić --stat z --name tylko
źródło
alias gits='git show --stat --oneline'
, a następniegits
przez sam pokazuje najnowsze zmiany (w głowie), natomiastgits b24f5fb
mogą być używane, aby pokazać zmiany jakiejkolwiek rewizji za.git config --global alias.changes 'show --stat --oneline'
. Być może . Następnie możesz wpisaćgit changes
(z opcjonalnym zatwierdzeniem) i uzyskać wynik z pierwszych przykładów powyżej.git config --global alias.changes "show --stat --oneline"
git show
działa również na przeglądanie stashed zmian: na przykładgit show --stat --oneline stash@{1}
Możesz też zrobić
i możesz przeglądać różne zatwierdzenia, zatwierdzać wiadomości i zmienione pliki.
Wpisz q, aby odzyskać monit.
źródło
git show 5944ad2a8b5 --name-only
aby wyświetlić nazwę konkretnego zatwierdzeniaOstatnio musiałem wymienić wszystkie zmienione pliki między dwoma zatwierdzeniami. Więc użyłem tej (także * nix) komendy
Aktualizacja : Lub, jak wskazał Ethan poniżej
Używanie
--name-status
obejmie również zmianę (dodaną, zmodyfikowaną, usuniętą itp.) Obok każdego plikuźródło
git diff --name-status START_COMMIT..END_COMMIT
, nie potrzebujesz końcowego|sort | uniq
.git diff --name-only START_COMMIT..END_COMMIT
git diff --name-only START_COMMIT..END_COMMIT | grep -v -e '**.png' -e '**.xml'
. Chciałem listę zmian kodu tylko dla ogromnego PR, który dodał tysiące plików PNG i układów XML.Najprostsza forma:
git show --stat (hash)
Łatwiej to zapamiętać i dostarczy Ci wszystkich potrzebnych informacji.
Jeśli naprawdę chcesz tylko nazwy plików, możesz dodać
--name-only
opcję.git show --stat --name-only (hash)
źródło
Dość często używam zmienionego aliasu. Aby skonfigurować:
następnie:
Podobne polecenia, które mogą być przydatne:
źródło
Posługiwać się
Spowoduje to wyświetlenie identyfikatora zatwierdzenia, wiadomości, plików zmienionych oraz tego, czy zostało zmodyfikowane, utworzone, dodane lub usunięte. Coś w rodzaju polecenia „wszystko w jednym”.
źródło
Za pomocą standardowej komendy git diff (przydatnej również w skryptach):
Jeśli chcesz również status zmienionych plików:
Działa to dobrze z zatwierdzeniami scalania.
źródło
spróbuj tego polecenia dla nazwy i zmienia numer linii
pokaż tylko nazwy plików
aby uzyskać ostatni hash zatwierdzenia, spróbuj wykonać to polecenie
ostatnie zatwierdzenie z nazwą pliku i statusem pliku zmodyfikuj, utwórz lub usuń
lub dla wszystkich
Więcej informacji na temat dziennika git znajdziesz w tym artykule
https://devhints.io/git-log-format
https://devhints.io/git-log
źródło
źródło
OK, istnieje kilka sposobów pokazania wszystkich plików w konkretnym zatwierdzeniu ...
Aby zmniejszyć informacje i wyświetlać tylko nazwy plików, które zostały zatwierdzone, możesz po prostu dodać
--name-only
lub--name-status
oflagować ..., te flagi pokazują tylko nazwy plików, które różnią się od poprzednich zatwierdzeń, jak chcesz ...git diff
Następnie możesz zrobić, po--name-only
dwóch hashach zatwierdzenia<sha0> <sha1>
, coś w stylu poniżej:Tworzę również poniższy obraz, aby pokazać wszystkie kroki, które należy wykonać w tej sytuacji:
źródło
Używam tego, aby uzyskać listę zmodyfikowanych plików między dwoma zestawami zmian:
źródło
git diff --name-status .. | grep ^[^D] | cut -f2
Lubię korzystać
źródło
Jest też
git whatchanged
, który jest bardziej niski niżgit log
Wyświetla podsumowanie zatwierdzenia wraz z listą plików pod nimi wraz z ich trybami i jeśli zostały dodane (
A
), usunięte (D
) lub zmodyfikowane (M
);Dałby coś takiego:
Wiem, że ta odpowiedź tak naprawdę nie pasuje „bez zbędnych informacji”, ale nadal uważam, że ta lista jest bardziej przydatna niż tylko nazwy plików.
źródło
whatchanged
zamiast podawania parametrów.Lubię to:
źródło
A
&D
(dodaj i usuń) wstecz, ponieważ pokazuje różnicę od określonego zatwierdzenia do poprzedniego zatwierdzenia, zamiast na odwrót. Powinno byćgit diff --name-status <SHA1>^ <SHA1>
.Użyj prostego polecenia w jednym wierszu, jeśli chcesz tylko zmienić listę plików w ostatnim zatwierdzeniu:
źródło
Lista plików, które zmieniły się w zatwierdzeniu:
Nie wyświetla to komunikatów dziennika, dodatkowych znaków nowej linii ani żadnego innego bałaganu. Działa to dla każdego zatwierdzenia, nie tylko bieżącego. Nie wiem, dlaczego to nie całkiem jeszcze wymienione, więc dodaję go.
źródło
git diff SHA1^ SHA1
igit show SHA1
.git show
także wyświetlają komunikat zatwierdzeniaWyświetl dziennik.
COMMIT może być puste („”) lub sha-1 lub sha-1 skrócone.
Spowoduje to wyświetlenie tylko plików, bardzo przydatnych do dalszego przetwarzania.
źródło
Znaleziono idealną odpowiedź na to:
Abym mógł wiedzieć
źródło
Kombinacja „
git show --stat
” (dzięki Ryan) i kilku poleceń sed powinna skrócić dane dla Ciebie:To utworzy tylko listę zmodyfikowanych plików.
źródło
Istnieje prosta sztuczka, którą można wyświetlić jako listę plików, wystarczy dodać
:
po skrócie.Następnie możesz wiercić,
Jeśli trafisz plik, otrzymasz jego surową wersję; co czasami jest tym, czego chcesz, jeśli szukasz tylko dobrego odnośnika lub kluczowych fragmentów kodu (różnice mogą sprawić, że wszystko będzie bałaganem),
Jedyną wadą tej metody jest to, że nie wyświetla ona łatwo drzewa plików.
źródło
działa dobrze dla mnie
źródło
Używam tego, aby uzyskać listę zmienionych plików podczas zatwierdzania scalania
lub
źródło
Jeśli używasz wtyczki oh-my-zsh i git, skrót glg jest pomocny.
źródło
glg
wyniki: o wiele więcej. Przepraszam za zamieszanie.Tylko lista plików (nawet komunikat zatwierdzenia):
Np. Otwórz wszystkie zmienione pliki w edytorze:
źródło
Pomyślałem, że podzielę się podsumowaniem mojego aliasu .. również uważam, że używanie 'zsh' świetnie z git it chroma keys wszystko ładnie i mówi, że chcesz, aby gałąź była przez cały czas, zmieniając wiersz polecenia.
Dla osób korzystających z SVN okaże się to przydatne: (jest to kombinacja pomysłów z różnych wątków, biorę tylko wiedzę o tym, jak używać kopiowania / wklejania)
źródło
To powinno działać:
To pokaże, co nie jest zainscenizowane i co jest zainscenizowane.
źródło