Git-show
Czym jest polecenie git-show?
Polecenie git-show jest narzędziem wiersza polecenia przeznaczonym do wyświetlania rozszerzonych szczegółów obiektów Git, takich jak obiekty blob, drzewa, tagi i commity. Działanie polecenia git-show jest specyficzne dla każdego typu obiektu.
W przypadku tagów są wyświetlane komunikat tagu oraz inne obiekty uwzględnione w tagu. W przypadku drzew są wyświetlane nazwy oraz zawartość obiektów w drzewie. W przypadku obiektów blob jest wyświetlana ich bezpośrednia zawartość. Z kolei w przypadku commitów są wyświetlane komunikat dziennika commita oraz wersja różnicowa zmian wprowadzonych w commicie.
Wszystkie obiekty Git są dostępne za pomocą referencji. Domyślnie polecenie git-show działa w oparciu o referencję HEAD. Referencja HEAD zawsze wskazuje na ostatni commit w bieżącej gałęzi. W związku z tym za pomocą polecenia git-show można wyświetlić komunikat dziennika oraz wersję różnicową najnowszego commita.
Opcje polecenia git-show
<object>…
Przekazanie odniesienia do obiektu lub listy obiektów pozwala przeanalizować te konkretne obiekty. Jeśli nie zostaną przekazane żadne konkretne obiekty, polecenie git-show domyślnie będzie odnosić się do wskaźnika HEAD.
--pretty[=<format>]
Opcja pretty przyjmuje jedną z wartości dodatkowych formatu: oneline, short, medium, full, fuller, email, raw i format:<string>. Jeśli zostanie pominięta, domyślnie będzie stosowana opcja medium. Każda opcja formatu jest odmiennym szablonem decydującym o sposobie formatowania wyniku polecenia show w Git. Opcja <code>oneline</code> może być bardzo przydatna podczas wyświetlania listy commitów.
--abbrev-commit
Ta opcja skraca długość wyjściowych identyfikatorów commitów. Identyfikatory commitów składają się z 40 znaków i czasami trudno je wyświetlić na wąskich ekranach terminali. Ta opcja w połączeniu z --pretty=oneline pozwala uzyskać bardzo zwięzły wynik polecenia git log.
--no-abbrev-commit
Zawsze pokazuje pełny identyfikator commita złożony z 40 znaków. Powoduje zignorowanie opcji --abbrev-commit oraz wszelkich innych opcji mających na celu skrócenie identyfikatorów commitów, takich jak --oneline format.
--oneline
To skrót do korzystania z rozszerzonego polecenia --pretty=oneline --abbrev-commit.
--encoding[=<encoding>]
Domyślne kodowanie znaków w komunikatach dziennika w Git to UTF-8. Za pomocą tej opcji można zmienić sposób kodowania znaków na inny. Jest to przydatne w przypadku korzystania z Git w środowisku, w którym obowiązuje inne kodowanie znaków, przykładowo w terminalu z ustawieniami języka azjatyckiego.>
--expand-tabs=<n>--expand-tabs--no-expand-tabs
Te opcje zastępują znaki tabulacji w wyniku komunikatu dziennika spacjami. Za pomocą wartości n można skonfigurować liczbę spacji wstawianych zamiast znaku tabulacji. Jeśli wartość n nie zostanie jawnie zdefiniowana, znaki tabulacji będą zastępowane 8 spacjami. --no-expand-tabs jest odpowiednikiem n=0
--notes=<ref>--no-notes
Git ma wbudowany system notatek, który umożliwia dołączanie dowolnych metadanych typu „notatka” do obiektów. Te dane można ukryć lub filtrować podczas korzystania z polecenia git-show.
--show-signature
Ta opcja zweryfikuje, czy commit został podpisany podpisem szyfrowanym przez przekazanie go do podpolecenia gpg.
Formaty pretty w poleceniu git-show
Opcja --pretty omówiona powyżej przyjmuje jedną z kilku dodatkowych opcji określających format danych wyjściowych uzyskiwanych za pomocą polecenia git-show. Poniżej wymieniono te opcje dodatkowe wraz z przykładowym szablonem:
Oneline
<sha1> <title line>W formacie oneline system podejmuje próbę skompresowania jak największej ilości informacji w jednym wierszu.
short
commit <sha1>
Author: <author>
<title line>Średni
commit <sha1>
Author: <author>
Date: <author date>
<title line>
<full commit message>full
commit <sha1>
Author: <author>
Commit: <committer>
<title line>
<full commit message>fuller
commit <sha1>
Author: <author>
AuthorDate: <author date>
Commit: <committer>
CommitDate: <committer date>
<title line>
<full commit message>Adres e-mail
From <sha1> <date>
From: <author>
Date: <author date>
Subject: [PATCH] <title line>
<full commit message>raw
Format raw ignoruje inne opcje formatowania przekazane do polecenia git-show i wyświetla commit w dokładnie takiej postaci, w jakiej został zapisany w obiekcie. Format raw będzie ignorował opcje --abrev i --no-abbrev oraz zawsze wyświetlał commity nadrzędne.
Format
Opcja format umożliwia określenie niestandardowego formatu danych wyjściowych. Działa ona podobnie, jak polecenie printf w języku C. Opcja --pretty=format przyjmuje dodatkową wartość ciągu szablonu. Szablon ma dostęp do zmiennych symboli zastępczych, które zostaną wypełnione danymi z obiektu commita. Te symbole zastępcze są wymienione poniżej:
%H: Hash commita
%h: Skrócony hash commita
%T: Hash drzewa
%t: Skrócony hash drzewa
%P: Hashe elementów nadrzędnych
%p: Skrócone hashe elementów nadrzędnych
%an: Nazwa autora
%aN: Nazwa autora
%ae: Adres e-mail autora
%aE: Adres e-mail autora
%ad: Data autora (format akceptuje opcję --date=)
%aD: Data autora, styl RFC2822
%ar: Data autora, względna
%at: Data autora, znacznik czasu UNIX
%ai: Data autora, format ISO 8601
%cn: Nazwa twórcy commita
%cN: Nazwa twórcy commita
%ce: Adres e-mail twórcy commita
%cE: Adres e-mail twórcy commita
%cd: Data twórcy commita
%cD: Data twórcy commita, styl RFC2822
%cr: Data twórcy commita, względna
%ct: Data twórcy commita, znacznik czasu UNIX
%ci: Data twórcy commita, format ISO 8601
%d: Nazwy referencji, jak w przypadku opcji --decorate polecenia git-log(1)
%e: Kodowanie
%s: Temat
%f: Oczyszczony wiersz tematu, odpowiedni dla nazwy pliku
%b: Treść
%N: notatki do commita
%gD: Selektor dziennika reflog, np. refs/stash@{1}
%gd: Skrócony selektor dziennika reflog, np. stash@{1}
%gs: Temat dziennika reflog
%Cred: Zmiana koloru na czerwony
%Cgreen: Zmiana koloru na zielony
%Cblue: Zmiana koloru na niebieski
%Creset: Reset koloru
%C(...): Specyfikacja koloru zgodna z opisem w opcji konfiguracji color.branch.*
%m: Znacznik lewy, prawy lub granicy
%n: Nowy wiersz
%%: Znak %
%x00: Drukowanie bajtu z kodu szesnastkowego
%w([[,[,]]]): Przełączenie zawijania wiersza, jak w przypadku opcji -w w poleceniu git-shortlog
Przykłady polecenia git-show
git show --pretty="" --name-only bd61ad98To polecenie spowoduje wyświetlenie listy wszystkich plików w commicie, na których wykonano jakąś operację.
git show REVISION:path/to/fileTo polecenie spowoduje wyświetlenie konkretnej wersji pliku. Fragment REVISION zastąp hashem SHA Git.
git show v2.0.0 6ef002d74cbbc099e1063728cab14ef1fc49c783To polecenie spowoduje wyświetlenie tagu v2.0.0 oraz commita o identyfikatorze 6ef002d74cbbc099e1063728cab14ef1fc49c783.
git show commitA...commitDTo polecenie spowoduje wyświetlenie wszystkich commitów z zakresu od commitA do commitD.
Podsumowanie
Polecenie git-show jest bardzo wszechstronnym narzędziem do badania obiektów w repozytorium Git. Można go używać do wyszukania konkretnych plików w konkretnych wersjach. Przeanalizowanie zakresu commitów za pomocą polecenia git-show spowoduje wyświetlenie wszystkich pojedynczych commitów mieszczących się w zakresie. Polecenie git-show bywa pomocnym narzędziem do tworzenia uwag do poprawek oraz śledzenia zmian w repozytorium.