Widziałem, że niektóre książki i artykuły zawierają naprawdę ładnie wyglądające wykresy gałęzi gita i zatwierdzeń. Jak mogę zrobić wysokiej jakości drukowane obrazy historii git?
Jeśli chcesz wysokiej jakości i drukować, moje narzędzie ( bit-booster.com/graph.html ) konwertuje „git log” na SVG. Aby uzyskać więcej informacji, zobacz moją odpowiedź .
G. Sylvie Davies,
2
Szukasz narzędzia do wizualizacji własnej historii git - lub - narzędzia do tworzenia wykresów, które ma sposób na rysowanie ładnych „gałęzi Git”?
Usunąłbym tag direct-acykliczne-wykresy, ponieważ nie ma to znaczenia dla tego pytania
Maksim Dmitriev
Odpowiedzi:
1843
Aktualizacja: Ta odpowiedź przyciągnęła o wiele więcej uwagi niż na to zasługuje. Został pierwotnie opublikowany, ponieważ uważam, że wykresy wyglądają ładnie i można je było pobrać w programie Illustrator do publikacji - i nie było lepszego rozwiązania. Ale teraz istnieje wiele bardziej odpowiednich odpowiedzi na to pytanie, takich jak Fracz , Jubobs lub Harry Lee ! Proszę, głosujcie!
Aktualizacja 2: Opublikowałem ulepszoną wersję tej odpowiedzi w topologii gałęzi Visualizing w pytaniu git , ponieważ jest tam o wiele bardziej odpowiednia. Ta wersja zawiera informacje lg3o autorze i komisarzu, więc naprawdę powinieneś to sprawdzić. Pozostawienie tej odpowiedzi ze względów historycznych (i rep, przyznaję), choć naprawdę kusi mnie, aby ją po prostu usunąć.
Moje 2 ¢ : Mam dwa aliasy, które zwykle wrzucam do ~/.gitconfigpliku:
@ Turbo: Dla mnie kolory można zmieniać w ustawieniach profilu mojej aplikacji terminalowej (Terminal.app). Używana aplikacja terminalowa może, ale nie musi, obsługiwać zmianę kolorów wyświetlanych dla danych kolorów ANSI. Ponadto myślnik (dokładnie myślnik) został utworzony za pomocą opcji shift + [klawisz łącznika minus]. Przypuszczam, że błędnie założyłem, że wszystkie obecne platformy są zgodne z Unicode.
Slipp D. Thompson,
3
Twój --date=relativei --abbrev-commitsą zbędne, ponieważ jawnie użyć %cri %hodpowiednio.
Świetna odpowiedź. Zmodyfikowałem polecenie, aby wyglądało bardziej jak wyjście --oneline --decorate zlg = log --graph --abbrev-commit --decorate --format=format:'%C(yellow)%h%C(reset)%C(auto)%d%C(reset) %C(normal)%s%C(reset) %C(dim white)%an%C(reset) %C(dim blue)(%ar)%C (reset)' --all
Craig P. Motlin
1196
Wiele odpowiedzi tutaj jest świetnych, ale dla tych, którzy chcą tylko prostej odpowiedzi od jednego wiersza do punktu bez konieczności ustawiania aliasów lub czegokolwiek dodatkowego, oto:
git log --all --decorate --oneline --graph
Nie wszyscy robiliby git logcały czas, ale kiedy tego potrzebujesz, pamiętaj:
„ Pies ” = git log - a ll - d ecorate - o neline - g raph
dodałbym --abbrev-commit --decorate, a potem jest idealny!
asymetryczny
6
--abbrev-commit jest sugerowany przez --oneline, nie?
dwineman
4
@dwineman tak nie potrzebujesz, --abbrev-commitjeśli używasz--oneline
Thomas
2
Wydaje się, że w drugiej linii argument jest bezużyteczny. Nie widzę daty pokazanej w dzienniku. git log --graph --oneline --decorate --date=relative --all--date
Lerner Zhang
data nie jest wyświetlana, gdy podano
--oneline
253
Gitgraph.js pozwala rysować ładne gałęzie git bez repozytorium. Po prostu napisz kod JavaScript, który konfiguruje twoje gałęzie, zatwierdza i renderuje go w przeglądarce.
Strzałki powinny jednak wskazywać na rodziców, a nie dzieci.
jub0bs
4
@Jubobs: Dobra uwaga. To powszechna przeszkoda dla osób próbujących zrozumieć Git: myślą o sekwencji czasu zamiast o dziedziczeniu. Wyjaśnienie, że (prawie) wszystko w git jest względne w stosunku do czegoś wcześniejszego, pomaga wszystkim pozostałym elementom ułożyć się na swoim miejscu.
Slipp D. Thompson
6
Odnośnie kierunku strzałki, z dokumentacji: * @param {Boolean} [options.reverseArrow = false] - Jeśli strzałki są prawdziwe, wskaż przodków
Scott
2
Do zobaczenia po zobaczeniu tego posta i pobraniu go z gitgraph.js, postanowiłem stworzyć małe narzędzie, które w zasadzie umieści interfejs użytkownika w gitgraph.js. Nie jest jeszcze ukończony, a interfejs użytkownika nie jest tam, gdzie chcę, żeby był, ale wkłady są mile widziane! spójrz: github.com/bsara/git-grapher
bsara
123
Zbudowany na bazie TikZ i PGF , gitdagsto mały pakiet LaTeX, który pozwala bez wysiłku tworzyć wykresy zatwierdzeń grafiki wektorowej i wiele więcej.
Automatyczne generowanie wykresu zatwierdzeń istniejącego repozytorium nie jest celem gitdags; wykresy, które produkuje, są przeznaczone wyłącznie do celów edukacyjnych .
Często używam go do tworzenia wykresów dla moich odpowiedzi na pytania Git, jako alternatywy dla wykresów zatwierdzania ASCII:
Oto przykład takiego wykresu pokazującego efekty prostej bazy:
\documentclass{article}\usepackage{subcaption}\usepackage{gitdags}\begin{document}\begin{figure}\begin{subfigure}[b]{\textwidth}\centering\begin{tikzpicture}% Commit DAG\gitDAG[grow right sep =2em]{
A -- B -- {
C,
D -- E,
}};
% Tag reference\gittag[v0p1]% node name{v0.1}% node text{above=of A}% node placement{A}% target% Remote branch\gitremotebranch[origmaster]% node name{origin/master}% node text{above=of C}% node placement{C}% target% Branch\gitbranch{master}% node name and text {above=of E}% node placement{E}% target% HEAD reference\gitHEAD{above=of master}% node placement{master}% target\end{tikzpicture}\subcaption{Before\ldots}\end{subfigure}\begin{subfigure}[b]{\textwidth}\centering\begin{tikzpicture}\gitDAG[grow right sep =2em]{
A -- B -- {
C -- D' -- E',
{[nodes=unreachable] D -- E },
}};
% Tag reference\gittag[v0p1]% node name{v0.1}% node text{above=of A}% node placement{A}% target% Remote branch\gitremotebranch[origmaster]% node name{origin/master}% node text{above=of C}% node placement{C}% target% Branch\gitbranch{master}% node name and text {above=of E'}% node placement{E'}% target% HEAD reference\gitHEAD{above=of master}% node placement{master}% target\end{tikzpicture}\subcaption{\ldots{} and after \texttt{git rebase origin/master}}\end{subfigure}\caption{Demonstrating a typical \texttt{rebase}}\end{figure}\end{document}
@To wygląda świetnie! Chciałbym również kilka słów o tym, jak z niego korzystać: rozważmy użytkownika Windows, który nie ma zainstalowanego LaTeXa. Jak stworzyć wykres od zera?
VonC
1
@VonC Nie jestem pewien, ale jeśli nie chcesz instalować LaTeX, możesz być w stanie wygenerować swoje wykresy na ShareLatex i WriteLaTeX i podobnych. :)
Zajmę się tym i rozwinę
To świetne rzeczy! W pewnym momencie napiszę samouczek, ale na razie chciałem tylko wspomnieć, że możesz przetwarzać swoje wykresy za pomocą samodzielnej klasy dokumentów (używam funkcji przycinania), użyć latex input.texdo wygenerowania pliku dvi, a następnie w końcu użyć dvisvgm input.dviwygenerować plik SVG z przezroczystością. Konwersja SVG do formatu rastrowego, takiego jak PNG, jest łatwa convert -antialias -density 300 -background none input.svg output.png. Nawiasem mówiąc, te obrazy wyglądają niesamowicie z pełną przezroczystością. Nadal pracuję nad problemem z czcionkami ... i.imgur.com/1Xu2Ry5.png
Gitg to klon Gitk i GitX dla GNOME (działa również na KDE itp.), Który pokazuje dość kolorowy wykres.
Jest aktywnie rozwijany (od 2012 r.). Pozwala sortować zatwierdzenia (węzły wykresu) chronologicznie lub topologicznie oraz ukrywać zatwierdzenia, które nie prowadzą do wybranej gałęzi.
Działa dobrze z dużymi repozytoriami i złożonymi wykresami zależności.
Przykładowe zrzuty ekranu przedstawiające repozytoria linux-git i linux-2.6:
SourceTree jest naprawdę dobry. Drukuje dobrze wyglądającą i średniej wielkości historię oraz wykres gałęzi: (w eksperymentalnym projekcie Git wykonuje się następujące czynności, aby zobaczyć niektóre gałęzie). Obsługuje Windows 7+ i Mac OS X 10.6+.
Jest również dostępny w App Store, więc aktualizacja powinna działać automatycznie.
WebOrCode
Uwielbiam wykres sourcetree, ale wolę użyć wiersza poleceń, a ustawienia domyślne sourcetree zawsze psują moje repozytoria.
SgtPooki
SourceTree nalega, abyś utworzył konto Atlassian (lub użył swojego konta Google i udzielił Atlassian uprawnień, aby uzyskać e-mail i informacje o profilu), a po instalacji na Macu (OS X El Capitan v 10.11.5) nie powiedzie się w kroku „Klonowanie”: „fatal: nie znaleziono mapowania submodułów w .gitmodules dla ścieżki„ <ścieżka pominięta> ”” oraz dziwne ostrzeżenie: „szablony nie znaleziono / usr / local / git / share / git-core / templates”. Bardzo niejasne wiadomości, nie tak świetne.
Dmitrij Szewkoplyas
3
A potem po odinstalowaniu nie zapomnij uporządkować przyznanych wcześniej uprawnień bezpieczeństwa Google: myaccount.google.com/security -> Połączone aplikacje i witryny -> Aplikacje połączone z Twoim kontem -> Zarządzaj aplikacjami
Dmitry Shevkoplyas
60
Właśnie napisałem jedno narzędzie, które może generować ładny wykres zatwierdzeń git za pomocą HTML / Canvas.
Wygląda ładnie, jak uzyskać wstępnie sformatowane dane do narysowania tego wykresu?
Olga
3
@Olga Właśnie dodałem kod zaplecza do mojego repozytorium. Można zobaczyć go na github.
Harry Lee
56
git-forestjest doskonałym skryptem perlowym, którego używam od ponad roku i prawie nie używam tego git logpolecenia bezpośrednio.
Oto niektóre z rzeczy, które uwielbiam w tym skrypcie:
Wykorzystuje znaki Unicode do rysowania linii na wykresie, zapewniając bardziej ciągły wygląd linii wykresu.
Można łączyć --reversez danymi wyjściowymi wykresu, co nie jest możliwe w przypadku zwykłego git logpolecenia.
Wykorzystuje git logwewnętrznie do pobierania listy zatwierdzeń, więc wszystkie opcje, które przekazujesz, git logmogą być również przekazywane do tego skryptu.
Mam alias, używając git-forestnastępujących elementów:
[alias]
tree = "forest --pretty=format:\"%C(red)%h %C(magenta)(%ar) %C(blue)%an %C(reset)%s\" --style=15 --reverse"
@ void.pointer - Tak, nie będzie, ponieważ git-forest jest skryptem perla i ma zależności modułu perla. Uruchamianie gita pod cygwin z zainstalowanymi wymaganymi modułami perla może być najlepszą alternatywą, jaką możesz uzyskać, jeśli naprawdę chcesz tego na Windowsie :)
Tuxdude
1
Wow, to repozytorium ma wiele świetnych narzędzi. Dzięki!
Eldelshell,
1
Działa idealnie dobrze @MinGW (MSYS) pod Win $; zainstaluj CPANM; następnie Git.pm; utwórz alias i jesteś gotowy do pracy.
Sektor
jaki jest ten bardzo ładny emulator terminala, którego używasz? Podoba mi się graficzny wskaźnik podpowiedzi.
Prześlij dane wyjściowe git log --pretty='%h|%p|%d'bezpośrednio do narzędzia, a następnie kliknij link „pobierz graph.svg”.
Narzędzie jest po stronie klienta, więc żadne z twoich danych Git nie są udostępniane mojemu serwerowi. Możesz także zapisać HTML + JS lokalnie i uruchomić go przy użyciu adresów URL „file: ///”. Zweryfikowano na Chrome 48 i Firefox 43 na Ubuntu 12.04.
Generuje HTML, który można umieszczać bezpośrednio na dowolnej stronie (w tym na blogowym silniku blogowym!). Spójrz na niektóre z postów na blogu tutaj:
@Jay wygląda na to, że kolor odzwierciedla poziom wcięcia tej konkretnej gałęzi, i że gałęzie mogą przejść do innej kolumny i w związku z tym zmienić kolor. S
Thorbjørn Ravn Andersen
44
Na podstawie skryptu Graphviz, który znalazłem w odpowiedzi na powiązane pytanie , zhakowałem skrypt ruby, który tworzy widok podsumowania repozytorium git. Pomija całą liniową historię i po prostu pokazuje „interesujące” zatwierdzenia, tj. Te z wieloma rodzicami, wieloma dziećmi lub wskazane przez gałąź lub znacznik. Oto fragment wykresu generowanego dla jquery :
git-big-picture i BranchMaster są podobnymi narzędziami, które próbują pokazać tylko strukturę wysokiego poziomu wykresu, wyświetlając jedynie powiązanie tagów, gałęzi, scaleń itp.
Próbowałem tego, ale nie mogłem uzyskać poprawnej pracy kropki z danymi wyjściowymi dla naszego repozytorium (42 gałęzie, 175 tagów, 42 000 zatwierdzeń) ... Szkoda ... Właśnie tego szukałem!
Xavier Nodet,
1
@XavierNodet, jeśli Twoje repo jest publiczne i / lub masz komunikat o błędzie itp., Zgłoś problem na GitHub. Dzięki!
Matt McHenry,
38
Dodałem trzy polecenia niestandardowe: git tree, git streei git vtree. Przejrzę je w tej kolejności.
EDYCJA: Działa z wersją git 1.9a. Wartość koloru „auto” najwyraźniej debiutuje w tym wydaniu. To miły dodatek, ponieważ nazwy oddziałów będą miały inny kolor. Ułatwia to na przykład rozróżnienie między oddziałami lokalnymi i zdalnymi.
fatal: bad color value 'auto' for variable '--pretty format':(
Obróć
Okazało się, że jest to stara wersja git. Yum ma dość przestarzałą wersję Git w swoim repozytorium. Skompilowany ze źródła (1.9) i działa świetnie. To też jest piękne! Dzięki @gospes!
Obrót
Nie ma systemu OS X:sed: illegal option -- r
Slipp D. Thompson
@ SlippD.Thompson: Używam linux :). -R jest dla rozszerzonych wyrażeń regularnych. Najwyraźniej wersja sed OSX go nie ma. Być może mógłbyś zaktualizować sed. W przeciwnym razie możesz po prostu przepisać polecenie sed bez rozszerzonego wyrażenia regularnego.
gospes
1
W przypadku Mac OS X sed, użyj -E zamiast -r
Baxter Lopez
37
Zależy jak wyglądali. Używam gitx, który tworzy takie zdjęcia:
To zabawne ... przysiągłbym, że słyszę, jak mówisz „24-kierunkowe połączenie ośmiornicy”!
dty
4
Z ciekawości, czy ktoś próbował wyodrębnić procedury rysowania GitX (lub innego narzędzia GUI git) do samodzielnego pliku wykonywalnego? Jeśli się nie mylę, nakłonienie Cocoa do narysowania wektorowego pliku PDF nie byłoby trudne i zaspokoiłoby potrzebę OP do drukowania obrazów w wysokiej rozdzielczości.
Slipp D. Thompson
To było na S3 przez skitch, zanim przerobili swoje rzeczy. Chciałbym nadal to mieć. :(
Dustin
Właśnie zastąpiłem go wersją gitk z lwn.net/images/ns/kernel/gitk-octopus.png , połączoną z clojure-log.n01se.net/date/2008-12-24.html . @Dustin: mam nadzieję, że to w porządku. To nie jest ten sam obraz, ale służy podobnemu celowi. Z zrzutu ekranu wygląda na to, że jest to część jądra Linuksa, więc myślę, że można znaleźć to zatwierdzenie i ponownie pobrać równoważny zrzut ekranu gitx ....
Jak widać, jest to prawie alias zapisujący naciśnięcie klawisza, oparty na:
- kolor: przejrzysty wygląd
--graph: wizualizuj rodziców
- zamówienie-daty: najbardziej zrozumiałe spojrzenie na repozytorium
- Udekoruj: kto jest kim
--oneline: Wiele razy wszystko, co musisz wiedzieć o zatwierdzeniu
--simplify-by-decoration: podstawowy na pierwszy rzut oka (tylko tagi, odpowiednie scalenia, gałęzie)
--all: zapisywanie naciśnięć klawiszy ze wszystkimi aliasami z tą opcją i bez niej
--data = względna (% ar): zrozumienie działania w repozytorium (czasami oddział ma niewiele zobowiązań w pobliżu mistrza, ale kilka miesięcy temu od niego)
Zobacz w najnowszej wersji git (1.8.5 i wyżej) możesz skorzystać z% C (auto) w dekorowaniu symbolu zastępczego% d
Stąd wszystko, czego potrzebujesz, to dobra znajomość gitrevisions do filtrowania wszystkiego, czego potrzebujesz (coś takiego jak master..develop, gdzie --simplify-scalenia może pomóc w długoterminowych oddziałach)
Mocą wiersza poleceń jest szybka konfiguracja oparta na twoich potrzebach (zrozum, że repo nie jest unikalną konfiguracją dziennika kluczy, więc czasami konieczne jest dodanie opcji --numstat, --raw lub --name-status. Tutaj git log a aliasy są szybkie, wydajne i (z czasem) najładniejszym wykresem, jaki można uzyskać. Co więcej, przy wyjściowym wyświetlaniu domyślnym przez pager (powiedz mniej) zawsze możesz szybko wyszukiwać wyniki wewnątrz. Nie jesteś przekonany? Zawsze możesz przeanalizować wynik z projektami takimi jak gitgraph
Bardzo dobrze. Dodanie ich do mojej konfiguracji. Ale zalecam zmianę% Cred% d% Creset na% C (auto)% d% Creset, który da różne kolory nazwom oddziałów zdalnych lub lokalnych
MarkB42
17
Bardzo nieznacznie poprawiając niesamowitą odpowiedź Slippa , możesz użyć jego aliasów, aby zarejestrować tylko jedną gałąź:
W Git 2.12 + można nawet dostosować kolory linii wykresu za pomocą log.graphColorsopcji 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 .
Spróbuj ditaa . Może przekształcić dowolny diagram ASCII w obraz. Chociaż nie został zaprojektowany z myślą o gałęziach Git, byłem pod wrażeniem wyników.
Spróbuj tego jednego github.com/gugod/bin/blob/master/git-graphviz . Nie miałem wszystkich zależności w środowisku korporacyjnym, więc zmiana tych iopoleceń na proste polecenia perl `git log [...]` działała dla mnie.
Ross Rogers
Jeśli używasz komputera Mac i chcesz wypróbować ten skrypt, możesz pobrać perla, brew install perl dota następnie cpan common::sense IO::alluzyskać zależności. Następnie potokuj dane wyjściowe do odpowiedniego polecenia, takiego jak git-graphviz | dot -Tpng -o repo.png. Jednak wynik nie różni się niczym od git-big-picture .
jrhorn424
6
Funky graf Git commit jest jednym z pokazów biblioteki graficznej Raphaela .
Demo jest statyczne, ale pobranie kodu i zamiana ich danych statycznych na zestaw danych na żywo powinno być dość łatwe - myślę, że to tylko zatwierdzenie danych Git w formacie JSON.
@ Sven: Dziękujemy za zwrócenie na to uwagi. Poprawiłem dla ciebie niedziałające linki, choć pamiętaj, że ta odpowiedź ma już pięć lat, a zatem może być lepsze rozwiązanie w ostatnim czasie.
Ładnie i czysto tablitowy wynik gitowego wykresu dla muszli
z skrótami jak zwykle oprócz drzewa wykresów
lub w dodatkowej kolumnie
Edycja : Chcesz zacząć od razu bez czytania wyjaśnień? Użyj aliasu git, fragmentu skryptu lub kodu funkcji z sekcji EDYCJA 5 poniżej.
We wszystkich odpowiedziach na to pytanie żadna z dotychczas nie wydała czystych tablelowych wyników dla muszli. Najbliższa była odpowiedź z ewangelii, od której zacząłem.
Najważniejsze w moim podejściu jest zliczanie tylko znaków drzewa pokazanych użytkownikowi. Następnie wypełnij je osobistymi spacjami.
Oprócz git potrzebujesz tych narzędzi
grep
pasta
printf
sed
seq
tr
toaleta
głównie na pokładzie z dowolną dystrybucją Linuksa.
Fragment kodu to
while IFS=+ read -r graph hash time branch message;do
# count needed amount of whitespaces and create them
whitespaces=$((9-$(sed -nl1000 'l' <<< "$graph" | grep -Eo '\\\\|\||\/|\ |\*|_' | wc -l)))
whitespaces=$(seq -s' ' $whitespaces|tr -d '[:digit:]')
# show hashes besides the tree ...
#graph_all="$graph_all$graph$(printf '%7s' "$hash")$whitespaces \n"
# ... or in an own column
graph_all="$graph_all$graph$whitespaces\n"
hash_all="$hash_all$(printf '%7s' "$hash") \n"
# format all other columns
time_all="$time_all$(printf '%12s' "$time") \n"
branch_all="$branch_all$(printf '%15s' "$branch")\n"
message_all="$message_all$message\n"
done < <(git log --all --graph --decorate=short --color --pretty=format:'+%C(bold 214)%<(7,trunc)%h%C(reset)+%C(dim white)%>(12,trunc)%cr%C(reset)+%C(214)%>(15,trunc)%d%C(reset)+%C(white)%s%C(reset)' && echo);
# paste the columns together and show the tablelike output
paste -d' ' <(echo -e "$time_all") <(echo -e "$branch_all") <(echo -e "$graph_all") <(echo -e "$hash_all") <(echo -e "$message_all")
Do obliczenia potrzebnych białych znaków używamy
sed -nl500 'l' <<< "$graph"
aby uzyskać wszystkie znaki (do 500 w wierszu) niż wybrać tylko znaki drzewa: * | / \ _ i białe znaki z
grep -Eo '\\\\|\||\/|\ |\*|_'
na koniec policz je i odejmij wynik od wybranej przez nas wartości długości, która w tym przykładzie wynosi 9.
Aby wygenerować obliczoną liczbę białych znaków, których używamy
seq -s' ' $whitespaces
i skróć numery pozycji za pomocą
tr -d '[:digit:]'
niż dodaj je na końcu naszej linii wykresu. Otóż to!
Git ma dobrą opcję formatowania długości specyfikatorów wyjściowych już za pomocą składni '%><(amount_of_characters,truncate_option)', która dodaje białe spacje po lewej stronie>> lub prawej stronie <i może obcinać znaki od początku „ltrunc”, środkowego „mtrunc” lub końca „trunc”.
Jest ważne , że powyższe zastosowanie printf Cmd samo jest dla wartości długości odpowiadającej git kolumny.
Baw się, projektując własne, czysto wyglądające obrusy, zgodnie z własnymi potrzebami.
Dodatkowy:
Aby uzyskać odpowiednią wartość długości, możesz użyć następującego fragmentu kodu
i użyj $ max_chars jako właściwej wartości długości powyżej.
EDYCJA 1 : Właśnie zauważyłem, że znak podkreślenia jest również używany w drzewie git i odpowiednio edytuj powyższe fragmenty kodu. Jeśli brakuje innych znaków, zostaw komentarz.
EDYCJA 2 : Jeśli chcesz pozbyć się nawiasów wokół wpisów gałęzi i znaczników, po prostu użyj „% D” zamiast „% d” w poleceniu git, jak w EDIT 3.
EDYCJA 3 : Może opcja koloru „auto” jest najbardziej preferowana dla wpisów gałęzi i tagów?
Zmień tę część polecenia git (kolor 214 )
%C(214)%>(15,trunc)%D%C(reset)
do auto
%C(auto)%>(15,trunc)%D%C(reset)
EDYCJA 4 : A może lubisz własną mieszankę kolorów dla tej części, fantazyjne wyjście z migającą głową?
Aby móc najpierw stylizować nagłówek, nazwy gałęzi i tagi, potrzebujemy opcji koloru „auto” w naszym poleceniu git, tak jak w EDIT 3.
Następnie możemy zastąpić znane wartości kolorów własnymi, dodając te 3 linie
# branch name styling
branch=${branch//1;32m/38;5;214m}
# head styling
branch=${branch//1;36m/3;5;1;38;5;196m}
# tag styling
branch=${branch//1;33m/1;38;5;222m}
w naszym fragmencie kodu. Wartości zastępcze dają kolory powyżej.
Na przykład wartość zastępcza dla head to
3;5;1;38;5;196
gdzie 3; oznacza kursywę, 5; dla migania i 1; 38; 5; 196 dla koloru. Aby uzyskać więcej informacji, zacznij tutaj. Uwaga: To zachowanie zależy od twojego ulubionego terminalu i dlatego może nie być przydatne.
ALE możesz wybrać dowolną preferowaną wartość koloru.
PRZEGLĄD wartości kolorów git i odpowiedników ANSI
Jeśli potrzebujesz danych wyjściowych na konsoli w celu uzyskania dokładnych kolorów (powyższy obrazek jest pomniejszany o przepływ stosu), możesz uzyskać wynik za pomocą
function git_tably () {
unset branch_all graph_all hash_all message_all time_all max_chars
### add here the same code as under "2) as a shell-script" ###
}
i wywołaj funkcję git_table (pochodzącą z tablelike) bezpośrednio pod ścieżką projektu git lub z dowolnego miejsca ze ścieżką projektu git jako pierwszym parametrem.
2) jako skrypt powłoki :
Używam go z opcją przekazania katalogu projektu git jako pierwszego parametru do niego lub, jeśli jest pusty, weź katalog roboczy jak normalne zachowanie. W całości mamy
# edit your color/style preferences here or use empty values for git auto style
tag_style="1;38;5;222"
head_style="1;3;5;1;38;5;196"
branch_style="38;5;214"
# determine the max character length of your git tree
while IFS=+ read -r graph;do
chars_count=$(sed -nl1000 'l' <<< "$graph" | grep -Eo '\\\\|\||\/|\ |\*|_' | wc -l)
[[ $chars_count -gt ${max_chars:-0} ]] && max_chars=$chars_count
done < <(cd "${1:-"$PWD"}" && git log --all --graph --pretty=format:' ')
# create the columns for your prefered tablelike git graph output
while IFS=+ read -r graph hash time branch message;do
# count needed amount of whitespaces and create them
whitespaces=$(($max_chars-$(sed -nl1000 'l' <<< "$graph" | grep -Eo '\\\\|\||\/|\ |\*|_' | wc -l)))
whitespaces=$(seq -s' ' $whitespaces|tr -d '[:digit:]')
# show hashes besides the tree ...
#graph_all="$graph_all$graph$(printf '%7s' "$hash")$whitespaces \n"
# ... or in an own column
graph_all="$graph_all$graph$whitespaces\n"
hash_all="$hash_all$(printf '%7s' "$hash") \n"
# format all other columns
time_all="$time_all$(printf '%12s' "$time") \n"
branch=${branch//1;32m/${branch_style:-1;32}m}
branch=${branch//1;36m/${head_style:-1;36}m}
branch=${branch//1;33m/${tag_style:-1;33}m}
branch_all="$branch_all$(printf '%15s' "$branch")\n"
message_all="$message_all$message\n"
done < <(cd "${1:-"$PWD"}" && git log --all --graph --decorate=short --color --pretty=format:'+%C(bold 214)%<(7,trunc)%h%C(reset)+%C(dim white)%>(12,trunc)%cr%C(reset)+%C(auto)%>(15,trunc)%D%C(reset)+%C(white)%s%C(reset)' && echo);
# paste the columns together and show the tablelike output
paste -d' ' <(echo -e "$time_all") <(echo -e "$branch_all") <(echo -e "$graph_all") <(echo -e "$hash_all") <(echo -e "$message_all")
3) jako alias git :
Być może najwygodniejszym sposobem jest dodanie aliasu git w .gitconfig
Powinieneś wyjaśnić w swojej odpowiedzi, w jaki sposób te fragmenty bash zamieniają się w fantazyjne polecenia podobne do dziennika git. Można dowiedzieć się, jakie są zastosowania, patrząc na odpowiedź, którą podałeś, ale odpowiedzi powinny być samodzielne
Andras Deak
Masz na myśli, że powinienem szczegółowo wyjaśnić cmd git log? Czy możesz mi podać przykład tego, czego brakuje.
onemorequestion
Uwaga: Dane wyjściowe niesamowitej komendy git log są używane przez ten fragment kodu w celu otrzymania tablelowego wyniku na terminalu. Na odwrót, jak wspomniałeś;)
onemorequestion
Pomyślałem, że za każdym razem, gdy tego potrzebujesz, nie piszesz 20 wierszy. Sensowne jest zdefiniowanie tego jako funkcji bash lub aliasu git. Większość czytelników nie zadaje sobie trudu, aby uzupełnić kod, aby był łatwy w użyciu. O to mi chodziło. Jeśli po prostu umieścisz kod w losowym pliku sh na swojej ścieżce, możesz mnie zignorować.
Andras Deak
1
Widzę. Dziękuję za Twoją radę. Zmienię swoją odpowiedź i dodam taki alias. Zwykle używam plików do takich „długich” poleceń, jak wspomniałeś. Zgadzam się z tym, że napisanie tutaj obu sposobów jest znacznie wygodniejsze.
onemorequestion
5
niektóre aliasy w ~ / .oh-my-zsh / plugins / git / git.plugin.zsh
W przypadku użytkowników OSX wziąłem przykład @gospes i nieznacznie zmodyfikowałem go dla gsed ( gnu-sedzainstalowany przez homebrew) i dostosowałem kolory (do pracy z czarnym tłem, nie jestem pewien, jak oryginalny przykład mógłby renderować to, co robi w przykład, ponieważ określa czarny tekst na terminalu z czarnym tłem).
Kluczem dla OSX jest pierwsza instalacja gnu sed (która ma opcję -r). Najłatwiej jest to zrobić za pomocą homebrew, który nie zastąpi instalowanego przez system sed, ale zamiast tego instaluje gnu sed jako „gsed”. Mam nadzieję, że to pomoże @ SlippD.Thompson, który skomentował powyżej, że OSX nie działa.
Odpowiedzi:
Aktualizacja: Ta odpowiedź przyciągnęła o wiele więcej uwagi niż na to zasługuje. Został pierwotnie opublikowany, ponieważ uważam, że wykresy wyglądają ładnie i można je było pobrać w programie Illustrator do publikacji - i nie było lepszego rozwiązania. Ale teraz istnieje wiele bardziej odpowiednich odpowiedzi na to pytanie, takich jak Fracz , Jubobs lub Harry Lee ! Proszę, głosujcie!
Aktualizacja 2: Opublikowałem ulepszoną wersję tej odpowiedzi w topologii gałęzi Visualizing w pytaniu git , ponieważ jest tam o wiele bardziej odpowiednia. Ta wersja zawiera informacje
lg3
o autorze i komisarzu, więc naprawdę powinieneś to sprawdzić. Pozostawienie tej odpowiedzi ze względów historycznych (i rep, przyznaję), choć naprawdę kusi mnie, aby ją po prostu usunąć.Moje 2 ¢ : Mam dwa aliasy, które zwykle wrzucam do
~/.gitconfig
pliku:git lg
/git lg1
wygląda następująco:i
git lg2
wygląda tak:źródło
#202020
/#555555
, Czerwony:#5d1a14
/#da4939
, Zielony:#424e24
/#a5c261
, Żółty:#6f5028
/#ffc66d
, Niebieski:#263e4e
/#6d9cbe
, Magenta:#3e1f50
/#a256c7
, Cyjan:#234e3f
/#62c1a1
i Biały:#979797
/#ffffff
.--date=relative
i--abbrev-commit
są zbędne, ponieważ jawnie użyć%cr
i%h
odpowiednio.%C(auto)
modyfikator do refnames (%d
), aby uzyskać ładniejsze kolory. Zobacz stackoverflow.com/questions/5889878/color-in-git-log/…lg = log --graph --abbrev-commit --decorate --format=format:'%C(yellow)%h%C(reset)%C(auto)%d%C(reset) %C(normal)%s%C(reset) %C(dim white)%an%C(reset) %C(dim blue)(%ar)%C (reset)' --all
Wiele odpowiedzi tutaj jest świetnych, ale dla tych, którzy chcą tylko prostej odpowiedzi od jednego wiersza do punktu bez konieczności ustawiania aliasów lub czegokolwiek dodatkowego, oto:
Nie wszyscy robiliby
git log
cały czas, ale kiedy tego potrzebujesz, pamiętaj:źródło
git config --global alias.adog "log --all --decorate --oneline --graph"
--all
tak długo mam zamiar płakać (T_T) DZIĘKUJĘ!Aby uzyskać tekst, możesz spróbować:
lub:
lub: oto alias graphviz do rysowania wykresu DAG.
Ja osobiście używać
gitx
,gitk --all
igitnub
.źródło
--abbrev-commit --decorate
, a potem jest idealny!--abbrev-commit
jeśli używasz--oneline
git log --graph --oneline --decorate --date=relative --all
--date
Gitgraph.js pozwala rysować ładne gałęzie git bez repozytorium. Po prostu napisz kod JavaScript, który konfiguruje twoje gałęzie, zatwierdza i renderuje go w przeglądarce.
lub z
metro
szablonem:lub z wiadomościami zatwierdzającymi, autorami i tagami:
Przetestuj za pomocą JSFiddle .
Wygeneruj go za pomocą Git Grapher przez @bsara.
źródło
Zbudowany na bazie TikZ i PGF ,
gitdags
to mały pakiet LaTeX, który pozwala bez wysiłku tworzyć wykresy zatwierdzeń grafiki wektorowej i wiele więcej.Automatyczne generowanie wykresu zatwierdzeń istniejącego repozytorium nie jest celem
gitdags
; wykresy, które produkuje, są przeznaczone wyłącznie do celów edukacyjnych .Często używam go do tworzenia wykresów dla moich odpowiedzi na pytania Git, jako alternatywy dla wykresów zatwierdzania ASCII:
Oto przykład takiego wykresu pokazującego efekty prostej bazy:
źródło
:)
latex input.tex
do wygenerowania pliku dvi, a następnie w końcu użyćdvisvgm input.dvi
wygenerować plik SVG z przezroczystością. Konwersja SVG do formatu rastrowego, takiego jak PNG, jest łatwaconvert -antialias -density 300 -background none input.svg output.png
. Nawiasem mówiąc, te obrazy wyglądają niesamowicie z pełną przezroczystością. Nadal pracuję nad problemem z czcionkami ... i.imgur.com/1Xu2Ry5.pnggitdags
jest już w drodze!Gitg to klon Gitk i GitX dla GNOME (działa również na KDE itp.), Który pokazuje dość kolorowy wykres.
Jest aktywnie rozwijany (od 2012 r.). Pozwala sortować zatwierdzenia (węzły wykresu) chronologicznie lub topologicznie oraz ukrywać zatwierdzenia, które nie prowadzą do wybranej gałęzi.
Działa dobrze z dużymi repozytoriami i złożonymi wykresami zależności.
Przykładowe zrzuty ekranu przedstawiające repozytoria linux-git i linux-2.6:
źródło
SourceTree jest naprawdę dobry. Drukuje dobrze wyglądającą i średniej wielkości historię oraz wykres gałęzi: (w eksperymentalnym projekcie Git wykonuje się następujące czynności, aby zobaczyć niektóre gałęzie). Obsługuje Windows 7+ i Mac OS X 10.6+.
http://www.sourcetreeapp.com/
źródło
Właśnie napisałem jedno narzędzie, które może generować ładny wykres zatwierdzeń git za pomocą HTML / Canvas.
I zapewnij wtyczkę jQuery, która ułatwia obsługę.
[github] https://github.com/tclh123/commits-graph
Zapowiedź:
źródło
git-forest
jest doskonałym skryptem perlowym, którego używam od ponad roku i prawie nie używam tegogit log
polecenia bezpośrednio.Oto niektóre z rzeczy, które uwielbiam w tym skrypcie:
--reverse
z danymi wyjściowymi wykresu, co nie jest możliwe w przypadku zwykłegogit log
polecenia.git log
wewnętrznie do pobierania listy zatwierdzeń, więc wszystkie opcje, które przekazujesz,git log
mogą być również przekazywane do tego skryptu.Mam alias, używając
git-forest
następujących elementów:Tak wygląda wyjście na terminalu:
źródło
Napisałem narzędzie sieciowe do konwersji dzienników git na ładne wykresy SVG: Bit-Booster - narzędzie do rysowania wykresów offline
Prześlij dane wyjściowe
git log --pretty='%h|%p|%d'
bezpośrednio do narzędzia, a następnie kliknij link „pobierz graph.svg”.Narzędzie jest po stronie klienta, więc żadne z twoich danych Git nie są udostępniane mojemu serwerowi. Możesz także zapisać HTML + JS lokalnie i uruchomić go przy użyciu adresów URL „file: ///”. Zweryfikowano na Chrome 48 i Firefox 43 na Ubuntu 12.04.
Generuje HTML, który można umieszczać bezpośrednio na dowolnej stronie (w tym na blogowym silniku blogowym!). Spójrz na niektóre z postów na blogu tutaj:
http://bit-booster.blogspot.ca/
Oto zrzut ekranu przykładowego pliku HTML wygenerowanego przez narzędzie:
http://bit-booster.com/graph.html (narzędzie)
źródło
Na podstawie skryptu Graphviz, który znalazłem w odpowiedzi na powiązane pytanie , zhakowałem skrypt ruby, który tworzy widok podsumowania repozytorium git. Pomija całą liniową historię i po prostu pokazuje „interesujące” zatwierdzenia, tj. Te z wieloma rodzicami, wieloma dziećmi lub wskazane przez gałąź lub znacznik. Oto fragment wykresu generowanego dla jquery :
git-big-picture i BranchMaster są podobnymi narzędziami, które próbują pokazać tylko strukturę wysokiego poziomu wykresu, wyświetlając jedynie powiązanie tagów, gałęzi, scaleń itp.
To pytanie ma kilka innych opcji.
źródło
Dodałem trzy polecenia niestandardowe:
git tree
,git stree
igit vtree
. Przejrzę je w tej kolejności.Za pomocą
git stree
igit vtree
używam bash, aby pomóc w formatowaniu.EDYCJA: Działa z wersją git 1.9a. Wartość koloru „auto” najwyraźniej debiutuje w tym wydaniu. To miły dodatek, ponieważ nazwy oddziałów będą miały inny kolor. Ułatwia to na przykład rozróżnienie między oddziałami lokalnymi i zdalnymi.
źródło
fatal: bad color value 'auto' for variable '--pretty format'
:(sed: illegal option -- r
Zależy jak wyglądali. Używam gitx, który tworzy takie zdjęcia:
Możesz porównać
git log --graph
vs gitk w 24-kierunkowym połączeniu ośmiornicy (pierwotnie z http://clojure-log.n01se.net/date/2008-12-24.html ):źródło
Aby uzyskać bardziej szczegółowy tekst, spróbuj:
Możesz napisać alias w $ HOME / .gitconfig
źródło
Oto moje zdanie na ten temat:
Zrzut ekranu:
Stosowanie:
git hist
- Pokaż historię bieżącego oddziaługit hist --all
- Pokaż wykres wszystkich gałęzi (w tym pilotów)git hist master devel
- Pokaż związek między dwoma lub więcej oddziałamigit hist --branches
- Pokaż wszystkie lokalne oddziałyDodaj
--topo-order
do sortowania zatwierdza topologicznie, a nie według daty (domyślnie w tym aliasie)Korzyści:
--decorate
, więc z osobnymi kolorami dla różnych nazw gałęziUstawiać:
źródło
gitg : przeglądarka repozytoriów oparta na gtk, to nowe, ale ciekawe i przydatne
http://git.gnome.org/browse/gitg
Obecnie go używam
źródło
GitX
i całkiem niezły. PolecamChociaż czasami używam gitg , zawsze wracam do wiersza poleceń:
Jak widać, jest to prawie alias zapisujący naciśnięcie klawisza, oparty na:
Zobacz w najnowszej wersji git (1.8.5 i wyżej) możesz skorzystać z% C (auto) w dekorowaniu symbolu zastępczego% d
Stąd wszystko, czego potrzebujesz, to dobra znajomość gitrevisions do filtrowania wszystkiego, czego potrzebujesz (coś takiego jak master..develop, gdzie --simplify-scalenia może pomóc w długoterminowych oddziałach)
Mocą wiersza poleceń jest szybka konfiguracja oparta na twoich potrzebach (zrozum, że repo nie jest unikalną konfiguracją dziennika kluczy, więc czasami konieczne jest dodanie opcji --numstat, --raw lub --name-status. Tutaj git log a aliasy są szybkie, wydajne i (z czasem) najładniejszym wykresem, jaki można uzyskać. Co więcej, przy wyjściowym wyświetlaniu domyślnym przez pager (powiedz mniej) zawsze możesz szybko wyszukiwać wyniki wewnątrz. Nie jesteś przekonany? Zawsze możesz przeanalizować wynik z projektami takimi jak gitgraph
źródło
Bardzo nieznacznie poprawiając niesamowitą odpowiedź Slippa , możesz użyć jego aliasów, aby zarejestrować tylko jedną gałąź:
Pozostawiając
--all
to możesz teraz zrobićlub nawet
źródło
Sugeruję
tig
https://github.com/jonas/tig , znacznie lepsze narzędzie wiersza poleceń dla git.Możesz użyć Homebrew, aby zainstalować TIG na MacOS:
źródło
Mam ten
git log
alias,~/.gitconfig
aby wyświetlić historię wykresów:Po wprowadzeniu tego,
git l
wypisze coś takiego:W Git 2.12 + można 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
git log --graph --oneline
aby upewnić się, że oneliner się nie zgubiPróbowałeś
gitk
czygitk --all
? Nie ma jednak funkcji print / save img as.źródło
--all
pokazuje wszystkie gałęzie.GitGraph
Generuje reprezentację PNG lub SVG historii zatwierdzeń Twojego repozytorium Git.
https://code.google.com/p/gitgraph
źródło
To moja końcowa odmiana, podobna do wielu odpowiedzi tutaj. Lubię dostosowywać przekazane flagi,
less
aby zapobiec zawijaniu słów.Ustawiłem na alias dla szybkiego dostępu, ponieważ polecenie jest nieco kłopotliwe.
źródło
Spróbuj ditaa . Może przekształcić dowolny diagram ASCII w obraz. Chociaż nie został zaprojektowany z myślą o gałęziach Git, byłem pod wrażeniem wyników.
Źródło (plik txt):
Komenda:
Wynik:
Obsługuje również kolory tła, linie przerywane, różne kształty i więcej. Zobacz przykłady .
źródło
Jeśli twoje repozytorium znajduje się na Gitlab, możesz użyć jego reprezentacji graficznej, ponieważ jest ona renderowana jako SVG w przeglądarce.
Przejdź do widoku wykresu repozytorium, np. Https://gitlab.com/gitlab-org/gitter/webapp/network/develop
Przewiń wykres w dół do dołu (leniwe ładunki się zgadzają!)
Użyj inspektora przeglądarki, aby skopiować element SVG do nowego pliku
Otwórz go w wybranym renderze, np. Inkscape
źródło
Nie wiem o bezpośrednim narzędziu, ale być może możesz zhakować skrypt, aby wyeksportować dane do formatu kropki i wyrenderować je za pomocą graphviz.
źródło
io
poleceń na proste polecenia perl `git log [...]` działała dla mnie.brew install perl dot
a następniecpan common::sense IO::all
uzyskać zależności. Następnie potokuj dane wyjściowe do odpowiedniego polecenia, takiego jakgit-graphviz | dot -Tpng -o repo.png
. Jednak wynik nie różni się niczym od git-big-picture .Funky graf Git commit jest jednym z pokazów biblioteki graficznej Raphaela .
Demo jest statyczne, ale pobranie kodu i zamiana ich danych statycznych na zestaw danych na żywo powinno być dość łatwe - myślę, że to tylko zatwierdzenie danych Git w formacie JSON.
Demo jest tutaj: http://dmitrybaranovskiy.github.io/raphael/github/impact.html
źródło
Ładnie i czysto tablitowy wynik gitowego wykresu dla muszli
z skrótami jak zwykle oprócz drzewa wykresów
lub w dodatkowej kolumnie
Edycja : Chcesz zacząć od razu bez czytania wyjaśnień? Użyj aliasu git, fragmentu skryptu lub kodu funkcji z sekcji EDYCJA 5 poniżej.
We wszystkich odpowiedziach na to pytanie żadna z dotychczas nie wydała czystych tablelowych wyników dla muszli. Najbliższa była odpowiedź z ewangelii, od której zacząłem.
Najważniejsze w moim podejściu jest zliczanie tylko znaków drzewa pokazanych użytkownikowi. Następnie wypełnij je osobistymi spacjami.
Oprócz git potrzebujesz tych narzędzi
głównie na pokładzie z dowolną dystrybucją Linuksa.
Fragment kodu to
Do obliczenia potrzebnych białych znaków używamy
aby uzyskać wszystkie znaki (do 500 w wierszu) niż wybrać tylko znaki drzewa: * | / \ _ i białe znaki z
na koniec policz je i odejmij wynik od wybranej przez nas wartości długości, która w tym przykładzie wynosi 9.
Aby wygenerować obliczoną liczbę białych znaków, których używamy
i skróć numery pozycji za pomocą
niż dodaj je na końcu naszej linii wykresu. Otóż to!
Git ma dobrą opcję formatowania długości specyfikatorów wyjściowych już za pomocą składni
'%><(amount_of_characters,truncate_option)'
, która dodaje białe spacje po lewej stronie>> lub prawej stronie <i może obcinać znaki od początku „ltrunc”, środkowego „mtrunc” lub końca „trunc”.Jest ważne , że powyższe zastosowanie printf Cmd samo jest dla wartości długości odpowiadającej git kolumny.
Baw się, projektując własne, czysto wyglądające obrusy, zgodnie z własnymi potrzebami.
Dodatkowy:
Aby uzyskać odpowiednią wartość długości, możesz użyć następującego fragmentu kodu
i użyj $ max_chars jako właściwej wartości długości powyżej.
EDYCJA 1 : Właśnie zauważyłem, że znak podkreślenia jest również używany w drzewie git i odpowiednio edytuj powyższe fragmenty kodu. Jeśli brakuje innych znaków, zostaw komentarz.
EDYCJA 2 : Jeśli chcesz pozbyć się nawiasów wokół wpisów gałęzi i znaczników, po prostu użyj „% D” zamiast „% d” w poleceniu git, jak w EDIT 3.
EDYCJA 3 : Może opcja koloru „auto” jest najbardziej preferowana dla wpisów gałęzi i tagów?
Zmień tę część polecenia git (kolor 214 )
do auto
EDYCJA 4 : A może lubisz własną mieszankę kolorów dla tej części, fantazyjne wyjście z migającą głową?
Aby móc najpierw stylizować nagłówek, nazwy gałęzi i tagi, potrzebujemy opcji koloru „auto” w naszym poleceniu git, tak jak w EDIT 3.
Następnie możemy zastąpić znane wartości kolorów własnymi, dodając te 3 linie
tuż przed linią
w naszym fragmencie kodu. Wartości zastępcze dają kolory powyżej.
Na przykład wartość zastępcza dla head to
gdzie 3; oznacza kursywę, 5; dla migania i 1; 38; 5; 196 dla koloru. Aby uzyskać więcej informacji, zacznij tutaj. Uwaga: To zachowanie zależy od twojego ulubionego terminalu i dlatego może nie być przydatne.
ALE możesz wybrać dowolną preferowaną wartość koloru.
PRZEGLĄD wartości kolorów git i odpowiedników ANSI
Tutaj znajdziesz listę z opcją koloru / stylu git .
Jeśli potrzebujesz danych wyjściowych na konsoli w celu uzyskania dokładnych kolorów (powyższy obrazek jest pomniejszany o przepływ stosu), możesz uzyskać wynik za pomocą
w ścieżce projektu git, która korzysta z pierwszego zatwierdzenia z danych wyjściowych dziennika git.
EDYCJA 5 : Jak wspomniał członek „Andras Deak”, istnieje kilka sposobów wykorzystania tego kodu:
1) jako alias :
alias nie akceptuje parametrów, ale funkcja może , dlatego po prostu zdefiniuj w pliku .bashrc
i wywołaj funkcję git_table (pochodzącą z tablelike) bezpośrednio pod ścieżką projektu git lub z dowolnego miejsca ze ścieżką projektu git jako pierwszym parametrem.
2) jako skrypt powłoki :
Używam go z opcją przekazania katalogu projektu git jako pierwszego parametru do niego lub, jeśli jest pusty, weź katalog roboczy jak normalne zachowanie. W całości mamy
3) jako alias git :
Być może najwygodniejszym sposobem jest dodanie aliasu git w .gitconfig
Następnie wystarczy zadzwonić
git tably
pod dowolną ścieżkę projektu.Git jest tak potężny, że możesz zmieniać głowę, tagi, ... bezpośrednio jak pokazano powyżej i wzięto stąd .
Inną wymyślną opcją jest wybranie preferowanych kolorów drzew
co daje szalenie wyglądające, ale zawsze tablelowe wyniki git log
Za dużo mrugania! Aby zademonstrować, co jest możliwe. Zbyt mało określonych kolorów prowadzi do powtórzeń kolorów.
Pełne odniesienie .gitconfig to tylko jedno kliknięcie.
PONOWNIE: Baw się, projektując własne, wyglądające na tablelki produkty odpowiadające Twoim potrzebom.
źródło
niektóre aliasy w ~ / .oh-my-zsh / plugins / git / git.plugin.zsh
źródło
W przypadku użytkowników OSX wziąłem przykład @gospes i nieznacznie zmodyfikowałem go dla gsed (
gnu-sed
zainstalowany przez homebrew) i dostosowałem kolory (do pracy z czarnym tłem, nie jestem pewien, jak oryginalny przykład mógłby renderować to, co robi w przykład, ponieważ określa czarny tekst na terminalu z czarnym tłem).Kluczem dla OSX jest pierwsza instalacja gnu sed (która ma opcję -r). Najłatwiej jest to zrobić za pomocą homebrew, który nie zastąpi instalowanego przez system sed, ale zamiast tego instaluje gnu sed jako „gsed”. Mam nadzieję, że to pomoże @ SlippD.Thompson, który skomentował powyżej, że OSX nie działa.
źródło