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 log
historię 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 ...
Odpowiedzi:
Użyj
git log --graph
lubgitk
. (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:
źródło
--all
opcję, a także przypisuje zatwierdzenia. Nigdy też nie widziałem w rozwijanym menu, że możesz wybrać wszystkie gałęzie.git log --graph --decorate --oneline
- pokazuje jeden zatwierdzenie w wierszu i ozdabia nazwami gałęzi.--all
opcję. Całkiem przydatne!--simplify-by-decoration
opcji.Zwykle używam
Z kolorami (jeśli twoja skorupa to Bash):
Spowoduje to wydrukowanie reprezentacji tekstowej w następujący sposób:
(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ć
~/.gitconfig
plik: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
~/.gitconfig
pliku. 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:źródło
--full-history
dotyczy tylko podczas używania--simplify-by-decoration
lub określania ścieżki do pliku.Mam 3 aliasy (i 4 aliasy do szybkiego użycia), które zwykle wrzucam do
~/.gitconfig
pliku:git lg
/git lg1
wygląda następująco:git lg2
wygląda tak:i
git lg3
wygląda tak: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:
.gitconfig
,.gitconfig
w 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.
źródło
%C(bold yellow)
z%C(auto)
za posiadające różne koloryHEAD
, lokalnych i zdalnych oddziałów ( ref ).%w()
; w ten sposób możesz również poprawnie zawijać dłuższe lub wieloliniowe komunikaty zatwierdzania bez popsuwania wykresu.--abbrev-commit
jest 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ć.--decorate
jest 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.lg1
ilg2
zrzutach ekranu(origin/test_on_10.8)
widać gałąź zdalną, a nalg2
zrzucie ekranu możesz patrz(HEAD -> master, origin/master, origin/HEAD)
pokazywanie lokalnych i odległych pozycjimaster
oddziału iHEAD
. 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) .Do każdego z tych przepisów (opartych na git log lub gitk) możesz dodać,
--simplify-by-decoration
aby 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.
źródło
--simplify-by-decoration
wyjaśnia to, co się dzieje.git log --graph --all --simplify-by-decoration
działa również.--simplify-by-decoration
podczas dodawania n zatwierdzeń przed / po każdym zdecentralizowanym zatwierdzeniu (jak-B
i-A
dlagrep
).Gitk
czasami bolesne dla mnie czytać.Motywuj mnie do napisania GitVersionTree .
źródło
99,999% mojego czasu patrzy na historię przez,
git lg
a 0,001% nagit log
.Chcę tylko udostępnić dwa aliasy dziennika, które mogą być przydatne (konfiguracja z .gitconfig):
git lg
zobaczy aktualną historię oddziału.git hist
zobaczy całą historię oddziału.źródło
Spójrz na Gitkraken - wieloplatformowy interfejs GUI, który w przejrzysty sposób pokazuje topologię.
Oto krótki samouczek wideo na temat niektórych zaawansowanych funkcji.
źródło
Lubię
git log
robić z:(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 )
Możesz także ograniczyć zakres wyświetlania dziennika (liczbę zatwierdzeń):
(pokaż tylko ostatnie 5 zatwierdzeń)
W aktualnie wybranym rozwiązaniu nie podoba mi się:
Wyświetlał o wiele za dużo informacji (gdy chcę tylko spojrzeć na krótkie podsumowanie):
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.źródło
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).
źródło
gitg --all
, jeśli chcesz uniknąć chowania się w rozwijanym menu.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.
źródło
Ł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 ...
źródło
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ń.
źródło
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
ls
katalogi zawierające repozytoria git.https://jonas.github.io/tig/
Ma zwykłe skróty,
/
do wyszukiwania itp.(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
)źródło
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.
źródło
Giggle rysuje naprawdę fajne wykresy.
źródło
Używam następujących aliasów.
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
źródło
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
źródło
Mam ten
git log
alias,~/.gitconfig
aby wyświetlić historię wykresów:Po wprowadzeniu aliasu
git l
wyświetli się coś takiego: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 .źródło
Znalazłem ten post na blogu, który pokazuje w zwięzły sposób:
Zwykle tworzę alias dla powyższego polecenia:
i proste po prostu użyj
gl
.Możesz także dodać alias do konfiguracji git. Otwórz
~/.gitconfig
i dodaj następujący wiersz do [alias]i użyj tego w ten sposób:
git lg
źródło
Mój osobisty ulubiony alias, za pośrednictwem .gitconfig, to:
źródło
Jeśli używasz edytora tekstu VSCode , rozważ rozszerzenie Git History Extension autorstwa D. Jayamanne:
źródło
Gitx to również fantastyczne narzędzie do wizualizacji, jeśli zdarzyło Ci się być w systemie OS X.
źródło
Kolejne polecenie git log. Ten z kolumnami o stałej szerokości :
źródło
Sprawdź
SmartGit
. Bardzo przypomina mi wizualizację oddziału TortoiseHg i jest darmowy do użytku niekomercyjnego.źródło
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
źródło
Próbowałem,
--simplify-by-decoration
ale 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.źródło
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)
źródło
Oficjalna strona Git zawiera narzędzia GUI dla platform zewnętrznych. Kliknij tutaj git GUI Tools dla platformy Linux
Użyłem
gitg
iGitKraken
na platformę Linux. Zarówno dobrze zrozumieć drzewo zatwierdzeńźródło