Wizualizacja topologii gałęzi w Git

883

Gram z Gitem w izolacji na własnej maszynie i trudno mi utrzymać mentalny model wszystkich moich gałęzi i zobowiązań. Wiem, że mogę zrobić git loghistorię zatwierdzeń z miejsca, w którym jestem, ale czy istnieje sposób, aby zobaczyć topografię całej gałęzi, coś w rodzaju map ASCII, które wydają się być używane wszędzie do wyjaśniania gałęzi?

      .-A---M---N---O---P
     /     /   /   /   /
    I     B   C   D   E
     \   /   /   /   /
      `-------------'

Po prostu czuję, że ktoś przychodzący i próbujący przejąć moje repozytorium miałby trudności z ustaleniem, co się właściwie dzieje.

Wydaje mi się, że jestem pod wpływem przeglądarki strumieniowej AccuRev ...

Benjol
źródło
duplikat stackoverflow.com/questions/1064361/…
Leif Gruenwoldt
1
@ leif81, pół duplikat, dla mnie. @Masi wyraźnie wykluczył gitk w swoim pytaniu.
Benjol

Odpowiedzi:

1081

Użyj git log --graphlub gitk. (Obie również akceptują --all, co spowoduje wyświetlenie wszystkich gałęzi zamiast tylko bieżącej.)

W przypadku nazw oddziałów i widoku kompaktowego spróbuj:

git log --graph --decorate --oneline
jrockway
źródło
46
To nawet nie oznacza zatwierdzeń gałęziami. Nie nazwałbym tego dobrą wizualizacją taką, jaka jest.
Roman Starkov
7
Dzięki! gitg ma również --allopcję, a także przypisuje zatwierdzenia. Nigdy też nie widziałem w rozwijanym menu, że możesz wybrać wszystkie gałęzie.
Thomas
210
Polecam git log --graph --decorate --oneline- pokazuje jeden zatwierdzenie w wierszu i ozdabia nazwami gałęzi.
śleske,
8
tig (klient git ncurse) również udostępnia tę --allopcję. Całkiem przydatne!
Pierre-Adrien Buisson
5
Zobacz także odpowiedź Andrew na temat --simplify-by-decorationopcji.
ruvim
482

Zwykle używam

git log --graph --full-history --all --pretty=format:"%h%x09%d%x20%s"

Z kolorami (jeśli twoja skorupa to Bash):

git log --graph --full-history --all --color \
        --pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s"

Spowoduje to wydrukowanie reprezentacji tekstowej w następujący sposób:

* 040cc7c       (HEAD, master) Manual is NOT built by default
* a29ceb7       Removed offensive binary file that was compiled on my machine and was hence incompatible with other machines.
| * 901c7dd     (cvc3) cvc3 now configured before building
| * d9e8b5e     More sane Yices SMT solver caller
| | * 5b98a10   (nullvars) All uninitialized variables get zero inits
| |/
| * 1cad874     CFLAGS for cvc3 to work successfully
| *   1579581   Merge branch 'llvm-inv' into cvc3
| |\
| | * a9a246b   nostaticalias option
| | * 73b91cc   Comment about aliases.
| | * 001b20a   Prints number of iteration and node.
| |/
|/|
| * 39d2638     Included header files to cvc3 sources
| * 266023b     Added cvc3 to blast infrastructure.
| * ac9eb10     Initial sources of cvc3-1.5
|/
* d642f88       Option -aliasstat, by default stats are suppressed

(Możesz po prostu użyć git log --format=oneline, ale spowoduje to powiązanie zatwierdzania wiadomości z liczbami, co wygląda mniej ładnie IMHO).

Aby utworzyć skrót do tego polecenia, możesz edytować ~/.gitconfigplik:

[alias]
  gr = log --graph --full-history --all --color --pretty=tformat:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s%x20%x1b[33m(%an)%x1b[0m"

Jednak, jak zauważa Sodel Vociferous w komentarzach, tak długie polecenie formatowania jest trudne do zapamiętania. Zwykle nie stanowi to problemu, ponieważ można go umieścić w ~/.gitconfigpliku. Jeśli jednak czasami musisz zalogować się na zdalnym komputerze, na którym nie możesz zmodyfikować pliku konfiguracyjnego, możesz użyć prostszej, ale szybszej wersji:

git log --graph --oneline
P Shved
źródło
10
Jeśli lubisz daty: git log --graph - pełna historia - all --color --date = short --pretty = format: "% x1b [31m% h% x09% x1b [32m% d% x1b [ 0m% x20% ad% s "
sehugg
7
--oneline jest bardziej niezapomnianym substytutem całej tej ładnej głębokiej magii formatowania.
Daniel Ralston,
1
@SodeltheVociferous, rzeczywiście, nie podchodziłem do problemu ze strony, o której mówisz; Rozszerzyłem swoją odpowiedź.
P Shved
2
Uwaga: --full-historydotyczy tylko podczas używania --simplify-by-decorationlub określania ścieżki do pliku.
Slipp D. Thompson
2
Czy mogę zapytać, skąd masz ciąg formatu? Albo jak, u licha, wymyśliłeś to?
elliotwesoff
443

Mam 3 aliasy (i 4 aliasy do szybkiego użycia), które zwykle wrzucam do ~/.gitconfigpliku:

[alias]
    lg = lg1
    lg1 = lg1-specific --all
    lg2 = lg2-specific --all
    lg3 = lg3-specific --all

    lg1-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(auto)%d%C(reset)'
    lg2-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(auto)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)'
    lg3-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset) %C(bold cyan)(committed: %cD)%C(reset) %C(auto)%d%C(reset)%n''          %C(white)%s%C(reset)%n''          %C(dim white)- %an <%ae> %C(reset) %C(dim white)(committer: %cn <%ce>)%C(reset)'

git lg/ git lg1wygląda następująco:

git lg1

git lg2 wygląda tak:

git lg2

i git lg3wygląda tak:

git lg3

Należy zauważyć, że nie jest to ostateczne rozwiązanie - to szablon, który możesz zmieniać, dodawać i naprawiać według własnych upodobań. Jeśli chcesz ich użyć, zalecam:

  1. Dodaj je do swojego .gitconfig,
  2. Dostosuj do swoich potrzeb (różne wybory kolorów, różne układy linii dla wersji 2- i 3-liniowej itp.),
  3. A następnie zapisz kopię w Gist lub innym narzędziu fragmentu kodu, abyś mógł skopiować i wkleić ją .gitconfigw przyszłości (lub, alternatywnie, kontrolować wersję plików dotfiles) .

Uwaga: Odpowiedź skopiowana i poprawiona na podstawie odpowiedzi na stackoverflow.com/questions/1057564/pretty-git-branch-graphs, ponieważ jest o wiele bardziej odpowiednia tutaj niż była. Zostawiłem kopię drugiego pytania ze względów historycznych - jest teraz zamknięte, a odpowiedź zawiera wiele innych odpowiedzi.

Slipp D. Thompson
źródło
10
Sugestia: wymienić %C(bold yellow)z %C(auto)za posiadające różne kolory HEAD, lokalnych i zdalnych oddziałów ( ref ).
Atcold,
2
Zauważ, że możesz uniknąć ręcznego dodawania wcięcia w ciągu formatu, używając %w(); w ten sposób możesz również poprawnie zawijać dłuższe lub wieloliniowe komunikaty zatwierdzania bez popsuwania wykresu.
charliegreen
1
@ mbadawi23 Są one zbędne ze względu na spójność między platformami i instalacjami Git. --abbrev-commitjest tam, ponieważ linie 2–3 są ręcznie wcięte spacjami, a ja chciałem mieć absolutną pewność, że użyje krótkiej SHA - więc lepiej jest zabezpieczyć niż przepraszać. --decoratejest tam również, ponieważ chociaż domyślne ustawienia Gita robią to samo, można je konfigurować inaczej lub inaczej w różnych wersjach Gita - dla nich absolutnie chcę dekoracji. Ostatecznie dodatkowe / zbędne flagi nie są tutaj złe - dzieje się to w pliku; to nie jest coś, co piszesz cały czas.
Slipp D. Thompson,
1
@TimothyPulliam Na końcu każdego wiersza reprezentującego końcówkę każdej gałęzi / znacznika zobaczysz powiązane nazwy gałęzi / znaczników w nawiasach - np. Na zrzutach ekranu lg1i lg2zrzutach ekranu (origin/test_on_10.8)widać gałąź zdalną, a na lg2zrzucie ekranu możesz patrz (HEAD -> master, origin/master, origin/HEAD)pokazywanie lokalnych i odległych pozycji masteroddziału i HEAD. To pasuje do popularnych narzędzi GUI do wizualizacji gałęzi dla Git (gitk, SourceTree, TortoiseGit, Tower, Fork, GitX), choć z nieco większą szczegółowością (niektóre narzędzia GUI używają kodowania kolorów) .
Slipp D. Thompson
2
@TimothyPulliam Aby zrozumieć, jakie zobowiązania są „częścią każdej gałęzi”, musisz wizualnie prześledzić kolorową linię. Prawie każde narzędzie niewiele ci w tym pomaga, ponieważ zatwierdzenia Git nie należą do żadnej gałęzi - implikuje się (w czasie wizualizacji wykresu), że należą do dowolnej gałęzi lub znacznika, który ma je w swoich przodkach . Jeśli żadna gałąź / tag odwołujący się do zatwierdzenia i znika (ale nie jest zbierany przez około 2 tygodnie); dodaj gałąź / tag odwołujący się do wcześniej niereferencyjnego zatwierdzenia i pojawi się ponownie. Mam nadzieję, że to wszystko ma sens.
Slipp D. Thompson
236

Do każdego z tych przepisów (opartych na git log lub gitk) możesz dodać, --simplify-by-decorationaby zwinąć nieciekawe liniowe części historii. To sprawia, że ​​o wiele więcej topologii jest widocznych na raz. Mogę teraz zrozumieć duże historie, które byłyby niezrozumiałe bez tej opcji!

Czułem potrzebę opublikowania tego, ponieważ wydaje się, że nie jest tak dobrze znany, jak powinien. Nie pojawia się w większości pytań dotyczących przepełnienia stosu dotyczących wizualizacji historii, a znalezienie go zajęło mi sporo czasu - nawet gdy wiedziałem, że tego chcę! W końcu znalazłem to w tym raporcie o błędach Debiana . Pierwszą wzmianką na temat przepełnienia stosu wydaje się być ta odpowiedź Antoine Pelisse.

Andrzej
źródło
3
Idealnie - dokładnie tego szukałem! Powinno uzyskać więcej głosów pozytywnych; prawie wszyscy już wiedzą o gitk / gitg / git log --graph, ale te wcale nie są bardzo przydatne, jeśli chcesz wizualizować topologię gałęzi i nie przejmuj się pojedynczymi zatwierdzeniami.
imolit
4
Właśnie tego potrzebowałem, fantastycznie. To jedyna rzecz, która mi pomogła, spośród wszystkich odpowiedzi. --simplify-by-decorationwyjaśnia to, co się dzieje.
Ela782
9
To naprawdę powinna być odpowiedź. git log --graph --all --simplify-by-decorationdziała również.
Irfy,
Gdybyśmy tylko mogli użyć --simplify-by-decorationpodczas dodawania n zatwierdzeń przed / po każdym zdecentralizowanym zatwierdzeniu (jak -Bi -Adla grep).
Junvar
Używam tego rozwiązania tak często, że mam alias jako „drzewo git”.
user16973
76

Gitk czasami bolesne dla mnie czytać.

wprowadź opis zdjęcia tutaj

Motywuj mnie do napisania GitVersionTree .

wprowadź opis zdjęcia tutaj

suma kontrolna
źródło
3
@exhuma Mam PR z autorem do obsługi Mono (testowany na Ubuntu 13.10 przeciwko Mono 2.10)
Max Ehrlich
1
Przekonałem się, że GitVersionTree utrzymuje gałęzie w tym samym miejscu z czasem, co ułatwia obserwowanie zmian.
sfranky
48

99,999% mojego czasu patrzy na historię przez, git lga 0,001% na git log.

Chcę tylko udostępnić dwa aliasy dziennika, które mogą być przydatne (konfiguracja z .gitconfig):

[Alias]
     lg = log --graph --pretty=format:'%Cred%h%Creset %ad %s %C(yellow)%d%Creset %C(bold blue)<%an>%Creset' --date=short
     hist = log --graph --full-history --all --pretty=format:'%Cred%h%Creset %ad %s %C(yellow)%d%Creset %C(bold blue)<%an>%Creset' --date=short
  • git lg zobaczy aktualną historię oddziału.
  • git hist zobaczy całą historię oddziału.
Yeo
źródło
44

Spójrz na Gitkraken - wieloplatformowy interfejs GUI, który w przejrzysty sposób pokazuje topologię.

Topologia

Oto krótki samouczek wideo na temat niektórych zaawansowanych funkcji.

pylang
źródło
6
Jak ten wątek ma GitKraken, ale nie ma starszego i darmowego SourceTree? (Wiem, wiem, Atlassian nie zawsze wszystko dobrze robi. Ale SourceTree jest całkiem doskonałym narzędziem do wizualizacji.)
XML
43

Lubię git logrobić z:

 git log --graph --oneline --branches

(również z opcją --all, również do przeglądania zdalnych gałęzi)

Działa z najnowszymi wersjami Git: wprowadzonymi od 1.6.3 ( czw., 7 maja 2009 )

  • --pretty=<style>Opcja „ ” dla rodziny komend dziennika może być teraz zapisywana jako „ --format=<style>”.
    Ponadto --format=%formatstringjest skrótem do --pretty=tformat:%formatstring.

  • --oneline” jest synonimem „ --pretty=oneline --abbrev-commit”.

PS D:\git\tests\finalRepo> git log --graph --oneline --branches --all
* 4919b68 a second bug10 fix
* 3469e13 a first bug10 fix
* dbcc7aa a first legacy evolution
| * 55aac85 another main evol
| | * 47e6ee1 a second bug10 fix
| | * 8183707 a first bug10 fix
| |/
| * e727105 a second evol for 2.0
| * 473d44e a main evol
|/
* b68c1f5 first evol, for making 1.0

Możesz także ograniczyć zakres wyświetlania dziennika (liczbę zatwierdzeń):

PS D:\git\tests\finalRepo> git log --graph --oneline --branches --all -5
* 4919b68 a second bug10 fix
* 3469e13 a first bug10 fix
* dbcc7aa a first legacy evolution
| * 55aac85 another main evol
| | * 47e6ee1 a second bug10 fix

(pokaż tylko ostatnie 5 zatwierdzeń)


W aktualnie wybranym rozwiązaniu nie podoba mi się:

 git log --graph

Wyświetlał o wiele za dużo informacji (gdy chcę tylko spojrzeć na krótkie podsumowanie):

PS D:\git\tests\finalRepo> git log --graph
* commit 4919b681db93df82ead7ba6190eca6a49a9d82e7
| Author: VonC <[email protected]>
| Date:   Sat Nov 14 13:42:20 2009 +0100
|
|     a second bug10 fix
|
* commit 3469e13f8d0fadeac5fcb6f388aca69497fd08a9
| Author: VonC <[email protected]>
| Date:   Sat Nov 14 13:41:50 2009 +0100
|
|     a first bug10 fix
|

gitk jest świetny, ale zmusza mnie do opuszczenia sesji powłoki dla innego okna, podczas gdy często szybkie wyświetlanie ostatnich n zatwierdzeń jest wystarczające.

VonC
źródło
Wybieram również tę metodę, ale utworzyłem alias, aby wpisanie „git graph” było takie samo, jak wykonanie „git log --graph --decorate --oneline”.
Will Pike
@ConnerPike dobry pomysł. Sam mam alias „lg”: patrz stackoverflow.com/a/3667139/6309
VonC
35

Gitg to świetne narzędzie dla Linuksa, podobne do Gitx dla OS X. Wystarczy uruchomić „gitg” w wierszu poleceń z dowolnego miejsca w strukturze drzewa repozytorium (podobnie jak w przypadku gitx).

Jack Senechal
źródło
3
W wielu słowach: gitg ma menu rozwijane, w którym można wybrać gałąź do wizualizacji. Ta lista rozwijana ma również opcję „Wszystkie”.
Phluks
1
Możesz też zacząć od tego gitg --all, jeśli chcesz uniknąć chowania się w rozwijanym menu.
imolit
25

Znalazłem „git-big-picture” całkiem przydatny: https://github.com/esc/git-big-picture

Tworzy ładne wykresy 2D za pomocą dot / graphviz zamiast raczej liniowych, „jednowymiarowych” widoków tworzonych przez gitk i znajomych. Dzięki opcji -i pokazuje punkty rozgałęzienia i scalenia zatwierdzeń, ale pomija wszystko pomiędzy.

Frank Osterfeld
źródło
dość prosty w użyciu, jeśli nie masz dużo zobowiązań i chcesz prostego rozwiązania, może warto spróbować.
wiswit
Powinien skalować się z liczbą zatwierdzeń w porządku (jeśli używasz -i), może stać się nieczytelny, jeśli masz złożone gałęzie i scalenia (ale wtedy, które narzędzie nie ma)
Frank Osterfeld
1
Dzięki naszemu projektowi na średnią skalę generuje to ogromny obraz z mnóstwem linii. Czy mogę ograniczyć głębokość, na którą się porusza? Czyli zobowiązuje się z ostatnich N dni lub mniej więcej.
Ondra Žižka
25

Ładne narzędzie internetowe jest nieprzyzwoite . Działa na dowolnej platformie obsługiwanej przez node.js & git. Jest wideo, jak to działa dla tych, którzy uważają, że takie rzeczy są łatwiejsze niż czytanie ...

wprowadź opis zdjęcia tutaj

Sardathrion - przeciw nadużyciom SE
źródło
21

Spójrz na BranchMaster .

Napisałem to, aby zwizualizować złożoną strukturę gałęzi, zwijając wszystkie zatwierdzenia między nimi do jednej linii. Liczby wskazują liczbę zatwierdzeń.

wprowadź opis zdjęcia tutaj

stroyer
źródło
1
Właśnie tego szukam. Czy są dostępne alternatywne polecenia / narzędzia?
Aalex Gabi
3
@AalexGabi Umieść to w gitconfig, robi to samo, ale w wierszu poleceń gbranch = log --graph --simplify-by-decoration --pretty = format: '% C (żółty)% h% C (biały)% d% C (pogrubiony czarny)% ar% C (reset)% n '--all
kracejic
W jaki sposób otrzymujesz dane do wizualizacji oddziałów?
Snowfish
15

Nikt nie wspomniał tig? Nie składa gałęzi takich jak „BranchMaster”, ale ...

Jest szybki, działa w terminalu.

Ponieważ jest tak szybki (+ sterowanie klawiaturą), że masz świetny UX, jest prawie jak mój lskatalogi zawierające repozytoria git.

https://jonas.github.io/tig/

Ma zwykłe skróty, /do wyszukiwania itp.

Wykres zmian

(ps. jest to terminal w tle tego zrzutu ekranu, obecnie wygląda lepiej, ale mój komputer nie chce zrobić zrzutu ekranu, przepraszam)

(pps. Używam również gitkraken i mam naprawdę wyraźne wizualizacje, ale jest znacznie cięższy niż tig)

druty
źródło
Jestem miłośnikiem terminali, a Tig (interfejs trybu tekstowego dla Git) jest dobrym narzędziem do interakcji z repozytoriami Git, jest to bardzo przydatne, w tym widok wykresu i historię Git. Polecam go miłośnikom terminali jako dodatkowe narzędzie do wiersza poleceń Git.
hermeslm
15

Tortoise Git ma narzędzie o nazwie „Wykres wersji”. Jeśli korzystasz z systemu Windows, wystarczy kliknąć repo prawym przyciskiem myszy -> Tortoise Git -> Wykres wersji.

cSn
źródło
1
co za fantastyczna funkcja, używanie żółwia przez długi czas, ale nie znam tej funkcji.
kreamik
To jest o wiele prostsze. Dzięki.
Anoop,
15

Giggle rysuje naprawdę fajne wykresy.

Renat
źródło
Podobnie Grittle , jeśli użyjesz OmniGraffle
New Alexandria
Próbowałem i widzę linię na zatwierdzenie, a nie linię na gałąź / tag. Jest zbyt szczegółowy, gdy masz dziesiątki oddziałów / tagów.
Aalex Gabi
12

Używam następujących aliasów.

[alias]
    lol = log --graph --decorate --pretty=oneline --abbrev-commit
    lola = log --graph --decorate --pretty=oneline --abbrev-commit --all

Ma więcej informacji w schemacie kolorów niż aliasy, które widziałem powyżej. Wydaje się również, że jest dość powszechny, więc możesz mieć szansę, że zaistnieje w otoczeniu innych osób lub będziesz mógł wspomnieć o tym w rozmowie bez konieczności wyjaśniania tego.

Ze zrzutami ekranu i pełnym opisem tutaj: http://blog.kfish.org/2010/04/git-lola.html

Lokist
źródło
12

W przypadku użytkowników komputerów Mac, kasa (bez słów), bezpłatne narzędzie open source GitUp: http://gitup.co/

Podoba mi się sposób wyświetlania wykresów, jest bardziej przejrzysty niż niektóre inne narzędzia, które widziałem.

Projekt jest tutaj: https://github.com/git-up/GitUp

Zrzut ekranu GitUp

Edward Tan
źródło
To jedyny wykres, na którym widać gałęzie na osi x i czas na osi y. To bardzo intuicyjne. GitUp jest absolutnie niesamowity! macOS już nie jest, więc przełączam się na Windows i bardzo tęsknię za Gitupem.
w00t
11

Mam ten git logalias, ~/.gitconfigaby wyświetlić historię wykresów:

[alias]
l = log --all --graph --pretty=format:'%C(auto)%h%C(auto)%d %s %C(dim white)(%aN, %ar)'

Po wprowadzeniu aliasu git lwyświetli się coś takiego:

wprowadź opis zdjęcia tutaj

W Git 2.12 + możesz nawet dostosować kolory linii wykresu za pomocąlog.graphColors opcji konfiguracji.

Jeśli chodzi o format dzienników, jest podobny --oneline, z dodaniem nazwiska autora (z poszanowaniem .mailmap) i względnej daty autora . Zauważ, że %C(auto)składnia, która mówi Gitowi, aby używał domyślnych kolorów dla skrótu zatwierdzenia itp., Jest obsługiwana w Git> = 1.8.3 .

Eugene Yarmash
źródło
1
Po raz pierwszy widzę prawdziwą datę autora i jest całkiem fajna! dzięki, dodam to do mojego gitconfig do!
Simon C.
użytkownicy systemu Windows powinni zastąpić pojedyncze cudzysłowy podwójnymi cudzysłowami
PierDipi
11

Znalazłem ten post na blogu, który pokazuje w zwięzły sposób:

git log --oneline --abbrev-commit --all --graph --decorate --color

Zwykle tworzę alias dla powyższego polecenia:

alias gl='git log --oneline --abbrev-commit --all --graph --decorate --color'

i proste po prostu użyj gl .

Możesz także dodać alias do konfiguracji git. Otwórz ~/.gitconfigi dodaj następujący wiersz do [alias]

[alias]
        lg = log --oneline --abbrev-commit --all --graph --decorate --color

i użyj tego w ten sposób: git lg

Sadegh
źródło
8

Mój osobisty ulubiony alias, za pośrednictwem .gitconfig, to:

graph = log --graph --color --all --pretty=format:"%C(yellow)%H%C(green)%d%C(reset)%n%x20%cd%n%x20%cn%x20(%ce)%n%x20%s%n"
Xero
źródło
6
Krótkie wyjaśnienie, jak będzie wyglądało polecenie, byłoby świetne.
Maks.
8

Jeśli używasz edytora tekstu VSCode , rozważ rozszerzenie Git History Extension autorstwa D. Jayamanne:

wprowadź opis zdjęcia tutaj

pylang
źródło
moim zdaniem to rozszerzenie jest trochę powolne. Nie aktualizuje się też automatycznie i wygląda na nieoszlifowany. Ale robi dobrą robotę, wizualizując drzewo
zmian
2
Kolejnym rozszerzeniem Visual Studio Code jest Git Graph autorstwa mhutchie. Używam tego wraz z GitLens.
Josef.B
7

Gitx to również fantastyczne narzędzie do wizualizacji, jeśli zdarzyło Ci się być w systemie OS X.

KEND
źródło
3
gitk (dla wszystkich) jest bardzo podobny. nie dokładnie takie same, ale całkiem podobne.
xero
Jest kilka rozwidleń Gitx - ten (rowanj) wydaje się w tej chwili najlepszy.
rjmunro
7

Kolejne polecenie git log. Ten z kolumnami o stałej szerokości :

git log --graph --pretty=format:"%x09%h | %<(10,trunc)%cd |%<(25,trunc)%d | %s" --date=short
David
źródło
6

Sprawdź SmartGit. Bardzo przypomina mi wizualizację oddziału TortoiseHg i jest darmowy do użytku niekomercyjnego.

Frederik Struck-Schøning
źródło
3

W systemie Windows jest bardzo przydatne narzędzie, którego możesz użyć: rozszerzenia git. To narzędzie GUI i sprawia, że ​​operacje git są bardzo łatwe.

Również jest open source.

http://gitextensions.github.io

loneshark99
źródło
2

Próbowałem, --simplify-by-decorationale wszystkie moje połączenia nie są wyświetlane. Zamiast tego przycinam po prostu wiersze bez symboli „\” i „/” w nagłówkach, zawsze zachowując wiersze za pomocą „(” wskazujące gałęzie natychmiast po tym. Podczas wyświetlania historii gałęzi generalnie nie jestem zainteresowany komentarzami do zatwierdzania, więc Też je usuwam. Skończyłem z następującym aliasem powłoki.

gbh () { 
    git log --graph --oneline --decorate "$@" | grep '^[^0-9a-f]*[\\/][^0-9a-f]*\( [0-9a-f]\|$\)\|^[^0-9a-f]*[0-9a-f]*\ (' | sed -e 's/).*/)/'
}
Isaac To
źródło
2

czy możemy to uczynić bardziej skomplikowanym?

Co powiesz na prosty git log - all - decorate --oneline --graph (pamiętaj A Dog = - All - Udekoruj --Oneline - Graph)

piksel
źródło
1
To jest to samo co zaakceptowana odpowiedź. Jednak rekwizyty dla mnemonika
aljgom
1

Oficjalna strona Git zawiera narzędzia GUI dla platform zewnętrznych. Kliknij tutaj git GUI Tools dla platformy Linux

Użyłem gitgi GitKrakenna platformę Linux. Zarówno dobrze zrozumieć drzewo zatwierdzeń

rookie4evr
źródło