Pertanyaan Grafik cabang git yang cantik


Saya telah melihat beberapa buku dan artikel memiliki grafik git dan komitmen yang sangat cantik. Bagaimana saya dapat membuat gambar riwayat git yang berkualitas tinggi?


978
2018-06-29 10:12


asal


Jawaban:


Pembaruan: Jawaban ini mendapat perhatian lebih dari yang seharusnya. Itu awalnya diposting karena saya pikir grafik terlihat bagus dan mereka bisa ditarik-di Illustrator untuk publikasi - dan tidak ada solusi yang lebih baik. Tapi sekarang ada jawaban yang lebih bisa diterapkan untuk Q ini, seperti fraczitu, Jublok', atau Harry Leeitu! Silakan upvote mereka !!

Pembaruan 2: Saya telah memposting versi perbaikan dari jawaban ini ke Memvisualisasikan topologi cabang di git pertanyaan, karena jauh lebih tepat di sana. Versi itu termasuk  lg3, yang menunjukkan informasi pengarang dan komuter, jadi Anda benar-benar harus memeriksanya. Meninggalkan jawaban ini untuk alasan historis (& reputasi, saya akui), meskipun saya benar-benar tergoda untuk menghapusnya.

2 ¢: Saya memiliki dua alias yang biasanya saya lempar ~/.gitconfig mengajukan:

[alias]
lg1 = 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(bold yellow)%d%C(reset)' --all
lg2 = 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 yellow)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all
lg = !"git lg1"

git lg/git lg1 terlihat seperti ini:
git lg1

dan git lg2 terlihat seperti ini:
git lg2


1520
2018-01-31 04:22



Banyak jawaban di sini hebat, tetapi bagi mereka yang hanya menginginkan satu baris sederhana hingga jawaban poin tanpa harus menyiapkan alias atau hal lain, ini dia:

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

Tidak semua orang akan melakukan git log sepanjang waktu, tetapi ketika Anda membutuhkannya, ingat saja: " Anjing "= git log -Sebuahll -decorate -Haineline -graph

enter image description here


550
2018-01-29 00:50



Untuk hasil tekstual yang dapat Anda coba:

git log --graph --abbrev-commit --decorate --date=relative --all

atau:

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

atau: ini  alias graphviz untuk menggambar grafik DAG.

Saya pribadi menggunakannya gitx, gitk --all dan gitnub.


290
2018-06-29 22:25



Gitgraph.js memungkinkan untuk menggambar cabang git yang cantik tanpa repositori. Cukup tulis kode Javascript yang mengonfigurasi cabang Anda dan melakukan commit dan render di browser.

var gitGraph = new GitGraph({
   template: "blackarrow",
   mode: "compact",
   orientation: "horizontal",
   reverseArrow: true
});

var master = gitGraph.branch("master").commit().commit();
var develop = gitGraph.branch("develop").commit();
master.commit();
develop.commit().commit();
develop.merge(master);

sample graph generated with Gitgraph.js

atau dengan metro template:

GitGraph.js metro theme

atau dengan pesan komit, penulis, dan tag:

GitGraph with commit messages

Uji dengan JSFiddle.

Hasilkan dengan Git Grapher oleh @bsara.


183
2018-06-08 14:40



Dibangun di atas TikZ & PGF, gitdags adalah paket LaTeX kecil yang memungkinkan Anda untuk dengan mudah menghasilkan grafik grafik vektor-grafis, dan banyak lagi.

Generasi otomatis dari grafik komitmen repositori yang ada tidak tujuan dari gitdags; grafik yang dihasilkannya hanya dimaksudkan untuk tujuan pendidikan.

Saya sering menggunakannya untuk menghasilkan grafik untuk jawaban saya terhadap pertanyaan Git, sebagai alternatif untuk grafik komitmen ASCII:

Berikut ini contoh grafik yang menunjukkan efek rebase sederhana:

enter image description here

\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}

96
2017-08-24 04:14



Gitg adalah tiruan dari Gitk dan GitX untuk GNOME (ini juga berfungsi pada KDE, dll.) yang menunjukkan grafik yang cukup berwarna.

Ini dikembangkan secara aktif (pada 2012). Ini memungkinkan Anda mengurutkan commit (simpul grafik) baik secara kronologis atau secara topologi, dan sembunyikan commit yang tidak mengarah ke cabang yang dipilih.

Ia bekerja dengan baik dengan repositori besar dan grafik ketergantungan yang kompleks.

Contoh tangkapan layar, menunjukkan repositori linux-git dan linux-2.6:

linux-git

linux-2.6


72
2017-11-01 23:35



SourceTree benar-benar bagus. Ini mencetak grafik ukuran dan grafik cabang yang tampak bagus dan sedang: (berikut ini dilakukan pada proyek Git eksperimental hanya untuk melihat beberapa cabang). Mendukung Windows 7+ dan Mac OS X 10.6+.

enter image description here

http://www.sourcetreeapp.com/


57
2017-09-17 00:52



Saya hanya menulis satu alat yang dapat menghasilkan grafik git yang cukup menggunakan HTML / Kanvas.

Dan menyediakan plugin jQuery yang membuatnya mudah digunakan.

[github] https://github.com/tclh123/commits-graph

Pratinjau:

preview


53
2018-01-14 15:07



git-forest adalah script perl yang sangat baik yang telah saya gunakan selama lebih dari setahun dan saya hampir tidak menggunakannya git log perintah langsung lagi.

Ini adalah beberapa hal yang saya sukai dari naskah ini:

  • Ini menggunakan karakter unicode untuk menggambar garis-garis dalam grafik memberikan tampilan yang lebih berkelanjutan ke garis grafik.
  • Anda bisa menggabungkan --reverse dengan output grafik, yang tidak mungkin dengan reguler git log perintah.
  • Itu menggunakan git log secara internal untuk mengambil daftar commit, jadi semua opsi yang Anda berikan git log juga bisa diteruskan ke skrip ini juga.

Saya memiliki alias yang digunakan git-forest sebagai berikut:

[alias]
tree = "forest --pretty=format:\"%C(red)%h %C(magenta)(%ar) %C(blue)%an %C(reset)%s\" --style=15 --reverse"

Ini adalah bagaimana output terlihat seperti pada terminal:

enter image description here


50
2018-03-22 04:50