Memvisualisasikan topologi cabang di Git

884

Saya bermain dengan Git secara terpisah di komputer saya sendiri, dan saya merasa sulit untuk mempertahankan model mental dari semua cabang dan komitmen saya. Saya tahu saya dapat melakukan a git loguntuk melihat komit sejarah dari tempat saya berada, tetapi apakah ada cara untuk melihat seluruh topografi cabang, sesuatu seperti peta ASCII ini yang tampaknya digunakan di mana-mana untuk menjelaskan cabang?

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

Rasanya seperti seseorang datang dan mencoba mengambil repositori saya akan mengalami kesulitan untuk mengetahui persis apa yang sedang terjadi.

Saya kira saya dipengaruhi oleh browser aliran AccuRev ...

Benjol
sumber
duplikat dari stackoverflow.com/questions/1064361/…
Leif Gruenwoldt
1
@ Leif81, setengah duplikat, untuk saya. @Masi secara eksplisit mengecualikan gitk dalam pertanyaannya.
Benjol

Jawaban:

1083

Gunakan git log --graphatau gitk. (Keduanya juga menerima --all, yang akan menampilkan semua cabang bukan hanya yang saat ini.)

Untuk nama cabang dan tampilan ringkas, coba:

git log --graph --decorate --oneline
jrockway
sumber
47
Ini bahkan tidak memberi label komit dengan cabang. Saya tidak akan menyebut ini visualisasi yang baik apa adanya.
Roman Starkov
7
Terima kasih! gitg juga memiliki --allopsi dan juga label komit. Saya juga tidak pernah melihat di dropdown bahwa Anda dapat memilih semua cabang di sana.
Thomas
210
Saya akan merekomendasikan git log --graph --decorate --oneline- menunjukkan satu komit per baris, dan menghiasi dengan nama cabang.
sleske
8
tig (klien ncurse git) juga menyediakan --allopsi. Cukup berguna!
Pierre-Adrien Buisson
5
Lihat juga jawaban oleh Andrew mengenai --simplify-by-decorationopsi.
ruvim
483

Saya biasanya menggunakan

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

Dengan warna (jika shell Anda adalah Bash):

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

Ini akan mencetak representasi berbasis teks seperti ini:

* 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

(Anda hanya bisa menggunakan git log --format=oneline, tetapi itu akan mengikat pesan komit ke angka, yang terlihat kurang cantik IMHO).

Untuk membuat pintasan untuk perintah ini, Anda mungkin ingin mengedit ~/.gitconfigfile Anda :

[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"

Namun, seperti dicatat Sodel the Vociferous dalam komentar, perintah format panjang seperti itu sulit untuk dihafalkan. Biasanya, itu bukan masalah karena Anda dapat memasukkannya ke dalam ~/.gitconfigfile. Namun, jika Anda terkadang harus masuk ke mesin jarak jauh di mana Anda tidak dapat memodifikasi file konfigurasi, Anda bisa menggunakan versi yang lebih sederhana tetapi lebih cepat untuk mengetik:

git log --graph --oneline
P Shved
sumber
10
Jika Anda menyukai tanggal: git log --graph --full-history --all --color --date = pendek --pretty = format: "% x1b [31m% h% x09% x1b [32m% d% x1b [ 0m% x20% ad% s "
sehugg
7
--oneline adalah pengganti yang lebih berkesan untuk semua sihir dalam format yang cantik.
Daniel Ralston
1
@ Modelthe Vociferous, memang, saya tidak mendekati masalah dari sisi yang Anda bicarakan; Saya memperluas jawaban saya.
P Shved
2
Catatan: --full-historyhanya relevan ketika menggunakan --simplify-by-decorationatau menentukan suatu filepath.
Slipp D. Thompson
2
Bolehkah saya bertanya dari mana Anda mendapatkan format string? Atau bagaimana Anda mengarang benda itu?
elliotwesoff
444

Saya memiliki 3 alias (dan 4 alias-alias untuk penggunaan cepat) yang biasanya saya masukkan ke ~/.gitconfigfile saya :

[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 lgSaya git lg1terlihat seperti ini:

git lg1

git lg2 terlihat seperti ini:

git lg2

dan git lg3terlihat seperti ini:

git lg3

Perlu dicatat bahwa ini tidak dimaksudkan sebagai solusi menyeluruh — ini adalah template untuk Anda ubah, tambahkan, dan perbaiki sesuai dengan keinginan Anda. Jika Anda ingin menggunakan ini, rekomendasi saya adalah untuk:

  1. Tambahkan mereka ke .gitconfig,
  2. Kustomisasi sesuai keinginan Anda (pilihan warna berbeda, pengaturan garis berbeda untuk versi 2- dan 3-baris, dll.),
  3. Dan kemudian menyimpan salinan ke Gist atau alat potongan kode lainnya sehingga Anda dapat menyalin & menempelkannya .gitconfigdi masa mendatang (atau versi lain mengontrol dotfile Anda, tentu saja) .

Catatan: Jawaban disalin dari dan ditingkatkan pada jawaban di stackoverflow.com/questions/1057564/pretty-git-branch-graphs karena jauh lebih sesuai di sini daripada di sana. Tinggalkan salinan pada pertanyaan lain karena alasan historis — sudah ditutup sekarang, dan jawabannya dirujuk oleh banyak jawaban lain.

Slipp D. Thompson
sumber
10
Saran: ganti %C(bold yellow)dengan yang %C(auto)memiliki warna berbeda untuk HEAD, cabang lokal dan jarak jauh ( ref ).
Atcold
2
Perhatikan bahwa Anda dapat menghindari lekukan secara manual dalam string format Anda dengan menggunakan %w(); dengan cara ini Anda juga dapat dengan benar membungkus baris lebih lama atau melakukan banyak pesan komit tanpa mengganggu grafik.
charliegreen
1
@ mbadawi23 Mereka redundan demi konsistensi di seluruh platform dan instalasi Git. --abbrev-commitada di sana karena garis ke-2-ke-3 adalah indentasi tangan dengan spasi, dan saya ingin memastikan bahwa itu akan menggunakan SHA pendek - jadi lebih baik aman daripada menyesal. --decorateada juga di sana karena walaupun default Git melakukan hal yang sama, yang dapat dikonfigurasi secara berbeda atau berbeda dalam versi Git yang berbeda — untuk ini, saya benar-benar ingin dekorasi. Pada akhirnya, flag ekstra / redundan tidak buruk di sini— ini berupa file; itu bukan sesuatu yang Anda ketik sepanjang waktu.
Slipp D. Thompson
1
@TimothyPulliam Di akhir setiap baris yang mewakili ujung setiap cabang / tag, Anda akan melihat nama cabang / tag terkait dalam tanda kurung— misalnya dalam lg1& lg2tangkapan layar Anda dapat melihat (origin/test_on_10.8)tampilan cabang jarak jauh, dan pada lg2tangkapan layar Anda dapat lihat (HEAD -> master, origin/master, origin/HEAD)menunjukkan posisi lokal dan jarak jauh dari mastercabang dan HEAD. Ini cocok dengan apa yang dilakukan alat GUI memvisualisasikan cabang populer untuk Git (gitk, SourceTree, TortoiseGit, Tower, Fork, GitX), meskipun dengan sedikit lebih banyak verbositas (beberapa alat GUI menggunakan kode warna) .
Slipp D. Thompson
2
@TimothyPulliam Untuk memahami apa yang dikomit adalah "bagian dari setiap cabang", Anda harus melacak garis berwarna secara visual. Hampir setiap alat tidak banyak membantu Anda dalam hal ini karena Git yang dilakukan pada dasarnya bukan milik cabang mana pun — mereka tersirat (pada grafik-visualisasi-waktu) milik cabang atau tag apa pun yang memiliki mereka di leluhur-leluhur mereka . Jika tidak ada cabang / tag referensi komit dan menghilang (tetapi tidak dikumpulkan sampah selama sekitar 2 minggu); tambahkan cabang / tag referensi komit yang sebelumnya tidak direferensikan dan muncul kembali. Saya harap ini semua masuk akal.
Slipp D. Thompson
236

Ke salah satu resep ini (berdasarkan log git atau gitk), Anda dapat menambahkan --simplify-by-decorationuntuk meruntuhkan bagian linear yang tidak menarik dari sejarah. Ini membuat topologi lebih terlihat sekaligus. Sekarang saya dapat memahami sejarah besar yang tidak akan dapat dipahami tanpa opsi ini!

Saya merasa perlu memposting ini karena sepertinya tidak sepopuler seharusnya. Itu tidak muncul di sebagian besar pertanyaan Stack Overflow tentang memvisualisasikan sejarah, dan saya butuh sedikit pencarian untuk menemukan - bahkan setelah saya tahu saya menginginkannya! Saya akhirnya menemukannya di laporan bug Debian ini . Penyebutan pertama tentang Stack Overflow tampaknya menjadi jawaban ini oleh Antoine Pelisse.

Andrew
sumber
3
Sempurna - persis apa yang saya cari! Itu harus mendapatkan lebih banyak upvotes; hampir semua orang sudah tahu tentang gitk / gitg / git log --graph, tetapi itu sama sekali tidak sangat berguna jika Anda ingin memvisualisasikan topologi cabang dan tidak peduli dengan komitmen tunggal.
imolit
4
Inilah yang saya butuhkan, fantastis. Satu-satunya hal yang membantu saya, dari semua jawaban. --simplify-by-decorationmemperjelas apa yang terjadi.
Ela782
9
Ini harus menjadi jawabannya. git log --graph --all --simplify-by-decorationberfungsi juga.
Irfy
Kalau saja kita bisa menggunakan --simplify-by-decorationsambil menambahkan n komit sebelum / setelah setiap komit deokrasi (suka -Bdan -Auntuk grep).
junvar
Saya menggunakan solusi ini sehingga sering saya menyebutnya sebagai 'pohon git'.
user16973
76

Gitk kadang menyakitkan bagi saya untuk membaca.

masukkan deskripsi gambar di sini

Memotivasi saya untuk menulis GitVersionTree .

masukkan deskripsi gambar di sini

checksum
sumber
3
@exhuma Saya memiliki PR dengan penulis untuk mendukung Mono (diuji pada Ubuntu 13.10 melawan Mono 2.10)
Max Ehrlich
1
Saya telah menemukan bahwa GitVersionTree membuat cabang di tempat yang sama dengan waktu, yang membuatnya lebih mudah untuk melihat bagaimana berbagai hal berubah.
sfranky
48

99,999% dari waktu saya melihat sejarah pada git lgdan 0,001% oleh git log.

Saya hanya ingin membagikan dua alias log yang mungkin berguna (konfigurasi dari .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 akan melihat riwayat cabang saat ini.
  • git hist akan melihat seluruh sejarah cabang.
Yeo
sumber
44

Lihatlah Gitkraken - GUI lintas platform yang menunjukkan topologi dengan cara yang jelas.

Topologi

Berikut ini adalah video tutorial singkat tentang beberapa fitur canggih.

pylang
sumber
6
Bagaimana utas ini memiliki GitKraken, tetapi tidak memiliki SourceTree yang lebih lama dan gratis? (Saya tahu, saya tahu, Atlassian tidak selalu mendapatkan segalanya dengan benar. Tetapi SourceTree adalah alat yang sangat bagus untuk memvisualisasikan.)
XML
43

Saya suka, dengan git log, melakukan:

 git log --graph --oneline --branches

(juga dengan --all, untuk melihat cabang jarak jauh juga)

Bekerja dengan rilis Git terbaru: diperkenalkan sejak 1.6.3 ( Kamis, 7 Mei 2009 )

  • " --pretty=<style>" pilihan ke keluarga log dari perintah sekarang dapat dieja sebagai " --format=<style>".
    Selain itu, --format=%formatstringadalah kependekan dari --pretty=tformat:%formatstring.

  • " --oneline" adalah sinonim untuk " --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

Anda juga dapat membatasi rentang tampilan log (jumlah komit):

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

(hanya tampilkan 5 komit terakhir)


Apa yang saya tidak suka tentang solusi yang dipilih saat ini adalah:

 git log --graph

Ini ditampilkan terlalu banyak info (ketika saya hanya ingin melihat ringkasan cepat):

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 bagus, tetapi memaksa saya untuk meninggalkan sesi shell untuk jendela lain, sedangkan menampilkan n terakhir melakukan dengan cepat sering kali cukup.

VONC
sumber
Saya memilih metode ini juga, tetapi saya membuat alias sehingga mengetik "git graph" sama dengan mengeksekusi "git log --graph --decorate --oneline".
Will Pike
@ConnerPike ide bagus. Saya memiliki alias 'lg' sendiri: lihat stackoverflow.com/a/3667139/6309
VonC
35

Gitg adalah alat yang hebat untuk Linux, mirip dengan Gitx untuk OS X. Jalankan saja 'gitg' pada baris perintah dari suatu tempat di dalam struktur pohon repositori Anda (sama dengan gitx).

Jack Senechal
sumber
3
Dalam banyak kata: gitg memiliki menu drop-down di mana orang dapat memilih cabang mana yang akan divisualisasikan. Drop-down ini juga memiliki opsi "Semua".
Phluks
1
Atau Anda bisa memulainya dengan gitg --all, jika Anda ingin menghindari mucking di dalam menu drop down.
imolit
25

Saya menemukan "git-big-picture" cukup berguna: https://github.com/esc/git-big-picture

Ini menciptakan grafik 2D yang cantik menggunakan dot / graphviz alih-alih tampilan linier, "satu dimensi" yang dihasilkan gitk dan teman. Dengan opsi -i, ini menunjukkan titik cabang dan menggabungkan komit tetapi mengabaikan semuanya di antaranya.

Frank Osterfeld
sumber
cukup mudah digunakan, jika Anda tidak memiliki banyak komitmen dan menginginkan solusi sederhana, mungkin bisa mencobanya.
wiswit
Seharusnya skala dengan jumlah komit baik-baik saja (jika Anda menggunakan -i), mungkin menjadi tidak dapat dibaca jika Anda memiliki cabang dan gabungan kompleks (tapi kemudian, alat mana yang tidak)
Frank Osterfeld
1
Dengan proyek kami skala menengah, ini menghasilkan gambar besar dengan banyak garis. Bisakah saya membatasi kedalamannya? Yaitu komitmen dari N hari terakhir atau lebih.
Ondra Žižka
25

Alat berbasis web yang bagus adalah ungit . Ini berjalan pada platform apa pun yang didukung node.js & git. Ada video tentang cara kerjanya bagi mereka yang menemukan hal-hal semacam itu lebih mudah daripada membaca ...

masukkan deskripsi gambar di sini

Sardathrion - menentang penyalahgunaan SE
sumber
21

Lihatlah BranchMaster .

Saya menulisnya untuk memvisualisasikan struktur cabang yang kompleks, dengan memangkas semua komit di antara mereka menjadi satu baris. Angka-angka menunjukkan jumlah komit.

masukkan deskripsi gambar di sini

stroyer
sumber
1
Ini yang saya cari. Apakah ada perintah / alat alternatif untuk melakukan ini?
Aalex Gabi
3
@AalexGabi Masukkan ini ke gitconfig Anda, ia melakukan hal yang sama, tetapi di baris perintah gbranch = log --graph --simplify-by-decoration --pretty = format: '% C (kuning)% h% C (putih)% d% C (hitam pekat)% ar% C (reset)% n '--all
kracejic
Bagaimana Anda mendapatkan data untuk memvisualisasikan cabang?
Snowfish
15

Tidak ada yang disebutkan tig? Itu tidak melipat cabang seperti "BranchMaster", tetapi ...

Cepat, berjalan di terminal.

Karena sangat cepat (kontrol keyboard) Anda mendapatkan UX yang hebat, hampir seperti " ls" saya untuk direktori yang berisi repositori git.

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

Ini memiliki cara pintas yang biasa, /untuk mencari, dll.

Grafik revisi

(ps. itu adalah terminal di latar belakang tangkapan layar ini, terlihat lebih baik saat ini, tetapi komputer saya menolak untuk mengambil tangkapan layar, maaf)

(pps. Saya juga menggunakan gitkraken dan memiliki visualisasi yang sangat jelas, tetapi jauh lebih berat daripada tig)

kabel
sumber
Saya seorang pencinta terminal dan Tig (antarmuka mode teks untuk Git) adalah alat yang baik untuk berinteraksi dengan repositori Git, sangat berguna termasuk tampilan grafik dan riwayat Git. Saya merekomendasikannya kepada pecinta terminal sebagai alat tambahan untuk baris perintah Git.
hermeslm
15

Tortoise Git memiliki alat yang disebut "Grafik Revisi". Jika Anda menggunakan Windows, semudah klik kanan pada repo Anda -> Tortoise Git -> Revision Graph.

cSn
sumber
1
fitur yang fantastis, menggunakan tortoise git untuk waktu yang lama tetapi tidak tahu fitur ini.
kreamik
Ini cara yang lebih sederhana. Terima kasih.
Anoop
15

Terkikik-kikik menarik grafik yang sangat bagus.

Renat
sumber
Begitu juga Grittle , jika Anda menggunakan OmniGraffle
New Alexandria
Mencobanya dan saya melihat garis per komit, bukan garis per cabang / tag. Terlalu detail saat Anda memiliki puluhan cabang / tag.
Aalex Gabi
12

Saya menggunakan alias berikut ini.

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

Ini memiliki lebih banyak info dalam skema warna daripada alias yang saya lihat di atas. Tampaknya juga cukup umum, sehingga Anda mungkin memiliki kemungkinan itu ada di lingkungan orang lain atau bisa menyebutkannya dalam percakapan tanpa harus menjelaskannya.

Dengan tangkapan layar dan deskripsi lengkap di sini: http://blog.kfish.org/2010/04/git-lola.html

Lokist
sumber
12

Untuk pengguna Mac, checkout (tanpa maksud kata-kata) alat gratis, sumber terbuka GitUp: http://gitup.co/

Saya suka cara grafik ditampilkan, lebih jelas daripada beberapa alat lain yang pernah saya lihat.

Proyeknya ada di sini: https://github.com/git-up/GitUp

Tangkapan layar GitUp

Edward Tan
sumber
Ini adalah satu-satunya grafik di mana Anda melihat cabang pada sumbu x dan waktu pada sumbu y. Ini sangat intuitif. GitUp benar-benar luar biasa! macOS tidak, lagi, jadi saya beralih ke Windows dan akan sangat merindukan Gitup.
w00t
11

Saya memiliki git logalias ini ~/.gitconfiguntuk melihat riwayat grafik:

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

Dengan alias di tempat, git lakan muncul sesuatu seperti ini:

masukkan deskripsi gambar di sini

Di Git 2.12 + Anda bahkan dapat menyesuaikan warna garis grafik menggunakan log.graphColorsopsi konfigurasi.

Adapun format log, mirip dengan --oneline, dengan penambahan nama penulis (menghormati .mailmap) dan tanggal relatif penulis . Perhatikan bahwa %C(auto)sintaks, yang memberi tahu Git untuk menggunakan warna default untuk komit hash, dll. Didukung di Git> = 1.8.3 .

Eugene Yarmash
sumber
1
Ini pertama kalinya saya melihat tanggal penulis realtive dan cukup bagus! terima kasih, saya akan menambahkannya ke gitconfig saya!
Simon C.
pengguna windows harus mengganti tanda kutip tunggal dengan tanda kutip ganda
PierDipi
11

Saya menemukan posting blog ini yang menunjukkan cara ringkas:

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

Saya biasanya membuat alias untuk perintah di atas:

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

dan cukup gunakan saja gl.

Anda juga dapat menambahkan alias ke konfigurasi git. Buka ~/.gitconfigdan tambahkan baris berikut ke [alias]

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

dan gunakan seperti ini: git lg

Sadegh
sumber
8

Alias ​​favorit pribadi saya, melalui .gitconfig, adalah:

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
sumber
6
Sedikit penjelasan seperti apa perintah itu akan sangat bagus.
Max
8

Bagi mereka yang menggunakan editor teks VSCode , pertimbangkan Ekstensi Riwayat Git oleh D. Jayamanne:

masukkan deskripsi gambar di sini

pylang
sumber
ekstensi ini agak lambat menurut saya. Itu juga tidak secara otomatis memperbarui dan terlihat tidak dipoles. Tapi itu melakukan pekerjaan yang baik memvisualisasikan pohon komit ...
aljazerzen
2
Ekstensi lain untuk Visual Studio Code adalah Git Graph oleh mhutchie. Saya menggunakan ini bersama dengan GitLens.
Josef.B
7

Gitx juga merupakan alat visualisasi yang fantastis jika Anda menggunakan OS X.

KEND
sumber
3
gitk (untuk semua orang) sangat mirip. tidak persis sama, tetapi sangat mirip.
xero
Ada beberapa garpu Gitx - yang ini (rowanj) tampaknya menjadi yang terbaik saat ini.
rjmunro
7

Perintah git log lainnya. Yang ini dengan kolom lebar tetap :

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

Lihat SmartGit. Ini sangat mengingatkan saya pada visualisasi cabang TortoiseHg dan gratis untuk penggunaan non-komersial.

Frederik Struck-Schøning
sumber
3

Di Windows ada alat yang sangat berguna yang dapat Anda gunakan: ekstensi git. Ini adalah alat gui dan membuat operasi git sangat mudah.

Ini juga bersumber terbuka.

http://gitextensions.github.io

loneshark99
sumber
2

Saya sudah mencoba --simplify-by-decorationtetapi semua gabungan saya tidak ditampilkan. Jadi saya malah hanya memotong garis tanpa simbol "\" dan "/" di header, sambil selalu menjaga garis dengan "(" menunjukkan cabang segera setelah itu. Ketika menunjukkan sejarah cabang saya secara umum tidak tertarik dalam komentar komit, jadi Saya menghapusnya juga, saya berakhir dengan alias shell berikut.

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
sumber
2

Bisakah kita membuatnya lebih rumit?

Bagaimana dengan git log --all --decorate --oneline --graph (ingat A Dog = --All --Decorate --Oneline --Graph)

pixel
sumber
1
Ini sama dengan jawaban yang diterima. Namun alat peraga untuk mnemonik
aljgom
1

Situs resmi Git meminta beberapa alat GUI khusus platform pihak ketiga. Tekan di sini git GUI Tools untuk Platform Linux

Saya telah menggunakan gitgdan GitKrakenuntuk platform linux. Keduanya bagus untuk memahami pohon komit

rookie4evr
sumber