Nie można wyświetlić drzewa Git w terminalu

439

Stary artykuł Killswitchcollective.com z 30 czerwca 2009 r. Zawiera następujące dane wejściowe i wyjściowe

git co master
git merge [your_branch]
git push

upstream    A-B-C-D-E            A-B-C-D-E-F-G
                 \        ---->               \
your branch       C-D-E                        G

Interesuje mnie, w jaki sposób otrzymujesz drzewny widok zatwierdzeń w twoim terminalu bez używania Gitk lub Gitx w OS / X.

Jak uzyskać drzewny widok zatwierdzeń w terminalu?

Léo Léopold Hertz 준영
źródło
2
Pytanie nie jest ważne, ale artykuł nie jest już dostępny. Kopia w pamięci podręcznej jest dostępna w Archiwum internetowym: web.archive.org/web/20110831142839/http://…
Alan De Smet

Odpowiedzi:

795

Jak uzyskać drzewny widok zatwierdzeń w terminalu?

git log --graph --oneline --all

to dobry początek.

Możesz dostać jakieś dziwne litery. Są to kody ASCII dla kolorów i struktury. Aby rozwiązać ten problem, dodaj .bashrc:

export LESS="-R"

tak, że nie trzeba używać filtra ASCII Tiga według

git log --graph --pretty=oneline --abbrev-commit | tig   // Masi needed this 

Wykres tekstowy artykułu z Git-ready zawiera inne opcje:

git log --graph --pretty=oneline --abbrev-commit

wykres dziennika git

Jeśli chodzi o artykuł, o którym wspominasz, wybrałbym odpowiedź Pod : ręczna produkcja ad-hoc.


Jakub Narębski wspomina w tig komentarzy, opartym na ncurses interfejsie tekstowym dla git. Zobacz ich wydania .
To dodaje się --graphopcji w 2007 roku.

VonC
źródło
1
Właśnie przetestowałem to na moim repozytorium. Działa, ale jestem w systemie Windows z MSysGit1.6.3.
VonC
files.getdropbox.com jest tutaj zablokowany w pracy :( Zobaczę twoje zdjęcie za około godzinę, czas wracać do domu.
VonC
@Vonc: Teraz wpisałem dwa dla pierwszego polecenia. Otrzymuję podobny widok jak na zdjęciu dla drugiego polecenia.
Léo Léopold Hertz
9
Istnieje również „tig”, interfejs tekstowy dla git (przy użyciu ncurses), który miał graficzny widok historii w terminalu, zanim była opcja „--graph” do git-log.
Jakub Narębski
2
Uważam, że --decoratejest również niezbędny na tego rodzaju wyświetlaczu - pokazuje nazwy ref (oddziały, zdalne i lokalne) obok skróconej nazwy zatwierdzenia.
Matt Enright
312

Rozwiązaniem jest utworzenie aliasu w swoim .gitconfigtelefonie i łatwe wywołanie go:

[alias]
    tree = log --graph --decorate --pretty=oneline --abbrev-commit

A kiedy zadzwonisz następnym razem, użyjesz:

git tree

Aby umieścić go w ~ / .gitconfig bez konieczności jego edycji, możesz:

git config --global alias.tree "log --graph --decorate --pretty=oneline --abbrev-commit"  

(Jeśli nie użyjesz --global, umieści go w .git / config twojego aktualnego repozytorium.)

Marouane Gazanayi
źródło
1
Jak to nie jest domyślny alias? Wydaje mi się, że korzystanie z CLI Gita byłoby trochę mniej irytujące w użyciu i nie możemy tego mieć ...
Timmmm
123
git log --oneline --decorate --all --graph

Widoczne drzewo z nazwami gałęzi.

Użyj tego, aby dodać go jako alias

git config --global alias.tree "log --oneline --decorate --all --graph"

Nazywasz to za pomocą

git tree

Drzewo Gita

Sebastian Patten
źródło
2
Bardzo miło, tym razem. Używam go w połączeniu z less -Sopisanym tutaj , aby zapobiec zaciemnieniu drzewa przez owinięte linie.
djvg
60

tig

Jeśli chcesz interaktywne drzewo, możesz użyć tig. Może być zainstalowany przez brewOSX i apt-getLinux.

brew install tig
tig

Oto, co otrzymujesz:

wprowadź opis zdjęcia tutaj

Mohsen
źródło
Czy możesz dostać takie drzewo jak w odpowiedzi VonC autorstwa Tiga? Używamy Tig w odpowiedzi VonC tylko jako filtr Ascii.
Léo Léopold Hertz -
4

Utrzymywanie krótkich poleceń ułatwi ich zapamiętanie:

git log --graph --oneline
JSON C11
źródło
1

Sugerowałbym, aby każdy zapisał pełne polecenie

git log --all --decorate --oneline --graph

zamiast tworzyć alias.

Dobrze jest wprowadzać polecenia do głowy, więc znasz je na pamięć, tj. Nie zmieniaj aliasów podczas zmiany maszyn.

Saksofonista
źródło
2
To właściwie git log --all --decorate --oneline --graphpo mnemoniku git log a dog;)
VonC
@VonC Ostateczny wynik jest taki sam. W każdym razie zgadzam się z tobą. Dzięki za opinie.
Saksofonista
Tak, to właśnie ;)usiłował przekazać (niedoskonale) uśmiech na końcu mojego poprzedniego komentarza: możesz użyć tej opcji w dowolnej kolejności. Po prostu uważam, że „log a dog” jest zabawny :)
VonC
1
Albo możesz, scp ~/.bashrc root@remote:~/a twoje aliasy szybko się zmieniają.
Adminy