Saya telah melihat beberapa buku dan artikel memiliki grafik git dan komitmen yang sangat cantik. Bagaimana saya bisa membuat gambar git history yang dapat dicetak berkualitas tinggi?
Jika Anda ingin kualitas tinggi dan dapat dicetak, alat saya ( bit-booster.com/graph.html ) mengubah "git log" menjadi SVG. Untuk informasi lebih lanjut, lihat jawaban saya .
G. Sylvie Davies
2
Apakah Anda mencari alat untuk memvisualisasikan sejarah git Anda sendiri - atau - alat pembuatan bagan yang memiliki cara untuk menggambar "cabang Git" yang cantik?
Saya akan menghapus tag diarahkan-asiklik-grafik karena tidak relevan dengan pertanyaan ini
Maksim Dmitriev
Jawaban:
1843
Pembaruan: Jawaban ini jauh lebih menarik daripada 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. Tetapi sekarang ada jawaban yang jauh lebih berlaku untuk Q ini, seperti fracz , Jubobs , atau Harry Lee ! Silakan pilih mereka !!
Pembaruan 2: Saya telah memposting versi perbaikan dari jawaban ini ke topologi cabang Visualisasi di pertanyaan git , karena jauh lebih tepat di sana. Versi itu termasuk lg3, yang menampilkan info pembuat dan pengangkut, jadi Anda harus memeriksanya. Meninggalkan jawaban ini karena alasan historis (& perwakilan, saya akui), meskipun saya benar-benar tergoda untuk menghapusnya saja.
2 ¢ saya: Saya memiliki dua alias yang biasanya saya masukkan ke ~/.gitconfigfile saya :
Ya tentu. Warna normal dan cerah / tebal adalah: Hitam #202020/ #555555, Merah: #5d1a14/ #da4939, Hijau: #424e24/ #a5c261, Kuning: #6f5028/ #ffc66d, Biru: #263e4e/ #6d9cbe, Magenta: #3e1f50/ #a256c7, Cyan: #234e3f/ #62c1a1, dan Putih: #979797/ #ffffff.
Slipp D. Thompson
3
@ Turbo: Bagi saya, warnanya dapat diubah dalam pengaturan profil untuk aplikasi terminal saya (Terminal.app). Aplikasi terminal yang Anda gunakan mungkin atau mungkin tidak mendukung perubahan warna yang ditampilkan untuk warna ANSI yang diberikan. Juga, tanda hubung (em tanda hubung, akurat) telah dibuat dengan opsi-shift- [kunci tanda hubung minus]. Saya kira saya salah berasumsi bahwa semua platform saat ini up-to-snuff dengan Unicode.
Slipp D. Thompson
3
Anda --date=relativedan --abbrev-commitberlebihan karena Anda secara eksplisit menggunakan %crdan %h, masing-masing.
Jawaban yang bagus Saya telah memodifikasi perintah agar terlihat lebih seperti keluaran --oneline --decorate denganlg = 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
1199
Banyak jawaban di sini bagus, tetapi bagi mereka yang hanya menginginkan satu baris jawaban langsung tanpa harus mengatur alias atau tambahan apa pun, ini dia:
git log --all --decorate --oneline --graph
Tidak semua orang akan melakukannya git logsetiap saat, tetapi ketika Anda membutuhkannya, ingat saja:
" A Dog " = git log - sebuah ll - d ecorate - o neline - g raph
saya akan menambahkan --abbrev-commit --decorate, dan kemudian sempurna!
asimetris
6
--abbrev-commit tersirat oleh --oneline, bukan?
dwineman
4
@ Franklin, ya Anda tidak perlu --abbrev-commitjika Anda menggunakan--oneline
Thomas
2
Tampaknya di baris kedua Anda git log --graph --oneline --decorate --date=relative --allyang --dateargumen tidak berguna. Saya tidak dapat melihat tanggal yang ditampilkan di log.
Lerner Zhang
tanggal tidak ditampilkan ketika --oneline ditentukan
martinkunev
253
Gitgraph.js memungkinkan untuk menggambar cabang-cabang git cantik tanpa repositori. Cukup tulis kode Javascript yang mengonfigurasi cabang Anda dan melakukan dan merendernya di browser.
Yay, itu benar-benar luar biasa! Diposting di fiddle jsfiddle.net/guan1oz1 sehingga Anda dapat mengujinya segera.
Berkus
14
Namun, panah harus mengarah ke orang tua, bukan ke anak-anak.
jub0bs
4
@Jubobs: Poin bagus. Itu adalah rintangan umum bagi orang yang mencoba memahami Git: mereka memikirkan urutan waktu alih-alih warisan. Menjelaskan bahwa (hampir) semua yang ada di git adalah relatif terhadap sesuatu sebelum membantu semua bagian lainnya masuk ke tempatnya.
Slipp D. Thompson
6
Mengenai arah panah, dari dokumen: * @param {Boolean} [options.reverseArrow = false] - Jadikan panah mengarah ke leluhur jika benar
Scott
2
FYI, setelah melihat posting ini dan bermain dengan gitgraph.js, saya memutuskan untuk membuat alat kecil yang pada dasarnya menempatkan UI ke gitgraph.js. Ini belum selesai, dan UI belum berada di tempat yang saya inginkan, tetapi kontribusi dipersilahkan! lihat: github.com/bsara/git-grapher
bsara
123
Dibangun di atas TikZ & PGF , gitdagsadalah paket kecil LaTeX yang memungkinkan Anda untuk dengan mudah menghasilkan grafik vektor-komitmen, dan banyak lagi.
Pembuatan grafik komit repositori yang sudah ada secara otomatis bukanlah tujuan dari gitdags; grafik yang dihasilkannya hanya dimaksudkan untuk tujuan pendidikan .
Saya sering menggunakannya untuk menghasilkan grafik untuk jawaban saya atas pertanyaan Git, sebagai alternatif untuk grafik komit ASCII:
Berikut adalah contoh grafik yang menunjukkan efek rebase sederhana:
\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}
@Itu terlihat hebat! Saya juga ingin beberapa baris tentang cara menggunakannya: pertimbangkan pengguna Windows yang tidak menginstal LaTeX sama sekali. Bagaimana cara menghasilkan grafik dari awal?
VonC
1
@VonC Saya tidak yakin, tetapi jika Anda tidak ingin menginstal LaTeX, Anda mungkin dapat menghasilkan grafik Anda di ShareLatex dan WriteLaTeX , dan sejenisnya. Saya akan melihat ke dalamnya dan memperluas wiki ketika saya memiliki lebih banyak waktu ... Jangan ragu untuk mempromosikan paket:)
jub0bs
Ini barang bagus! Saya akan menulis tutorial di beberapa titik, tetapi untuk sekarang, saya hanya ingin menyebutkan bahwa Anda dapat memposting proses grafik Anda menggunakan documentclass standalone (saya menggunakan fitur krop), gunakan latex input.texuntuk menghasilkan dvi, dan akhirnya menggunakan dvisvgm input.dviuntuk menghasilkan SVG dengan transparansi. Konversi dari SVG ke format raster seperti PNG cukup mudah convert -antialias -density 300 -background none input.svg output.png. Omong-omong, gambar-gambar ini terlihat luar biasa dengan transparansi penuh. Masih bekerja pada masalah font ... i.imgur.com/1Xu2Ry5.png
Gitg adalah tiruan dari Gitk dan GitX untuk GNOME (ini juga berfungsi pada KDE dll.) Yang menunjukkan grafik berwarna cantik.
Ini dikembangkan secara aktif (pada 2012). Ini memungkinkan Anda mengurutkan komit (grafik graph) baik secara kronologis atau topologis , dan menyembunyikan komit yang tidak mengarah ke cabang yang dipilih.
Ini berfungsi dengan baik dengan repositori besar dan grafik ketergantungan kompleks.
Contoh tangkapan layar, menampilkan repositori linux-git dan linux-2.6:
SourceTree sangat bagus. Itu memang mencetak sejarah ukuran sedang dan grafik cabang dan tampan: (berikut ini dilakukan pada proyek Git eksperimental hanya untuk melihat beberapa cabang). Mendukung Windows 7+ dan Mac OS X 10.6+.
Ini juga tersedia di App Store, jadi pembaruan harus bekerja secara otomatis.
WebOrCode
Saya suka grafik sourcetree, tetapi saya lebih suka menggunakan baris perintah, dan default sourcetree selalu mengacaukan repo saya.
SgtPooki
SourceTree akan bersikeras Anda membuat akun Atlassian (atau menggunakan akun google Anda dan memberikan Atlassian beberapa izin untuk mendapatkan email dan info profil), dan setelah menginstal di Mac (OS X El Capitan v 10.11.5) gagal pada langkah 'Kloning': "fatal: tidak ditemukan pemetaan submodule di .gitmodules untuk path '<path dilewati>'" dan juga peringatan aneh: "templat tidak ditemukan / usr / local / git / share / git-core / templates". Pesan yang sangat tidak jelas, tidak terlalu bagus.
Dmitry Shevkoplyas
3
Dan kemudian setelah pencopotan jangan lupa merapikan hak istimewa keamanan Google Anda yang Anda berikan sebelumnya: myaccount.google.com/security -> Aplikasi & situs yang terhubung -> Aplikasi yang terhubung ke akun Anda -> Kelola Aplikasi
Dmitry Shevkoplyas
60
Saya baru saja menulis satu alat yang dapat menghasilkan grafik komit git cantik menggunakan HTML / Kanvas.
Dan menyediakan plugin jQuery yang membuatnya mudah digunakan.
Terlihat bagus, bagaimana Anda mendapatkan data yang sudah diformat untuk menggambar grafik ini?
Olga
3
@ Olga Saya baru saja menambahkan kode backend ke repo saya. Anda dapat melihat itu di github.
Harry Lee
56
git-forestadalah skrip perl yang sangat baik yang telah saya gunakan selama lebih dari satu tahun dan saya hampir tidak menggunakan git logperintah secara langsung lagi.
Ini adalah beberapa hal yang saya sukai dari skrip ini:
Menggunakan karakter unicode untuk menggambar garis-garis dalam grafik memberikan tampilan yang lebih berkesinambungan ke garis grafik.
Anda dapat menggabungkan --reversedengan output grafik, yang tidak mungkin dengan git logperintah biasa .
Ini digunakan secara git loginternal untuk mengambil daftar commit, sehingga semua opsi yang Anda berikan git logjuga dapat diteruskan ke skrip ini.
Saya memiliki alias menggunakan git-forestsebagai berikut:
[alias]
tree = "forest --pretty=format:\"%C(red)%h %C(magenta)(%ar) %C(blue)%an %C(reset)%s\" --style=15 --reverse"
@ void.pointer - Ya itu tidak akan karena git-forest adalah skrip perl dan memiliki dependensi modul perl. Menjalankan git di bawah cygwin dengan modul perl yang diperlukan terpasang mungkin merupakan alternatif terbaik yang bisa Anda dapatkan jika Anda benar-benar menginginkan ini di Windows :)
Tuxdude
1
Wow, repo itu punya banyak alat hebat. Terima kasih!
Eldelshell
1
@MinGW (MSYS) berfungsi dengan baik di bawah Win $; instal CPANM; lalu Git.pm; buat alias dan Anda siap berangkat.
Sektor
apa itu emulator terminal yang sangat bagus yang Anda gunakan? Saya suka hal-hal indikator prompt grafis.
NH.
Bagaimana cara menginstal "skrip" ini? Saya di ubuntu.
Unggah output dari git log --pretty='%h|%p|%d'langsung ke alat dan kemudian klik tautan "unduh graph.svg".
Alat ini murni sisi klien, dan tidak ada data Git Anda yang dibagikan dengan server saya. Anda juga dapat menyimpan HTML + JS secara lokal dan menjalankannya menggunakan URL "file: ///". Diverifikasi pada Chrome 48 dan Firefox 43 di Ubuntu 12.04.
Ini menghasilkan HTML yang dapat diposting langsung ke halaman mana pun (termasuk mesin blogging blogspot!). Lihatlah beberapa posting blog di sini:
@Jay muncul warna mencerminkan tingkat lekukan itu cabang tertentu, dan bahwa cabang dapat pindah ke kolom lain dan karena itu perubahan color.s
Thorbjørn Ravn Andersen
44
Berdasarkan skrip Graphviz yang saya temukan dalam jawaban untuk pertanyaan terkait , saya meretas skrip ruby yang membuat tampilan ringkasan repositori git. Ini menghilangkan semua sejarah linier dan hanya menunjukkan komitmen "menarik", yaitu yang memiliki banyak orang tua, banyak anak, atau ditunjukkan oleh cabang atau tag. Berikut cuplikan grafik yang dihasilkannya untuk jquery :
git-big-picture dan BranchMaster adalah alat serupa yang mencoba menunjukkan hanya struktur tingkat tinggi dari grafik, dengan hanya menampilkan bagaimana tag, cabang, penggabungan, dll terkait.
Saya mencoba ini, tetapi tidak dapat membuat titik bekerja dengan benar dengan output untuk repo kami (42 cabang, 175 tag, 42.000 komit) ... Sayang sekali ... Itulah yang saya cari!
Xavier Nodet
1
@XavierNodet, jika repo Anda bersifat publik dan / atau Anda memiliki pesan kesalahan, dll., Silakan ajukan masalah pada GitHub. Terima kasih!
Matt McHenry
38
Saya telah menambahkan tiga perintah kustom: git tree, git streedan git vtree. Saya akan membahasnya dalam urutan itu.
EDIT: Ini bekerja dengan git versi 1.9a. Nilai warna 'otomatis' tampaknya memulai debutnya dalam rilis ini. Ini tambahan yang bagus karena nama cabang akan mendapatkan warna yang berbeda. Ini membuatnya lebih mudah untuk membedakan antara cabang lokal dan remote misalnya.
fatal: bad color value 'auto' for variable '--pretty format':(
Putar
Ternyata git versi lama. Yum memiliki versi Git yang cukup ketinggalan zaman di repo-nya. Dikompilasi dari sumber (1.9) dan berfungsi dengan baik. Itu indah juga! Terima kasih @gospes!
Putar
Jangan buka OS X:sed: illegal option -- r
Slipp D. Thompson
@ SlippD.Thompson: Saya menggunakan linux :). -R adalah untuk ekspresi reguler yang diperluas. Rupanya versi sed OSX tidak memilikinya. Mungkin Anda bisa memperbarui. Jika tidak, Anda bisa menulis ulang perintah sed tanpa regex yang diperluas.
gospes
1
Untuk Mac OS X sed, gunakan -E bukan -r
Baxter Lopez
37
Tergantung pada apa yang mereka terlihat. Saya menggunakan gitx yang membuat gambar seperti ini:
Ini lucu ... Aku bersumpah aku mendengar kamu berkata "24-way octopus merge"!
dty
4
Karena penasaran, adakah yang mencoba mengekstraksi rutinitas GitX's (atau GUI git tool lain) menjadi executable mandiri? Jika saya tidak salah, membuat Kakao untuk menarik ke file vektor PDF tidak akan sulit, dan akan memenuhi kebutuhan OP untuk citra cetak Q tinggi.
Slipp D. Thompson
Itu di S3 via skitch sebelum mereka redid hal mereka. Saya berharap saya masih memilikinya. :(
Dustin
Baru saja menggantinya dengan versi gitk dari lwn.net/images/ns/kernel/gitk-octopus.png , ditautkan dari clojure-log.n01se.net/date/2008-12-24.html . @Dustin: harap tidak apa-apa. Ini bukan gambar yang sama, tetapi memiliki tujuan yang sama. Dari tangkapan layar, sepertinya itu adalah bagian dari kernel linux, jadi saya kira Anda bisa menemukan komit itu dan mengambil ulang tangkapan layar gitx yang setara ....
Seperti yang Anda lihat, hampir merupakan alias hemat tombol, berdasarkan:
--warna: terlihat jelas
--graph: memvisualisasikan orang tua
--date-order: lihat repo yang paling bisa dimengerti
--decorate: siapa adalah siapa
--oneline: Sering kali semua yang perlu Anda ketahui tentang komit
--simplify-by-decoration: dasar untuk tampilan pertama (hanya tag, gabungan yang relevan, cabang)
--all: menyimpan penekanan tombol dengan semua alias dengan dan tanpa opsi ini
--date = relatif (% ar): Memahami aktivitas dalam repo (kadang-kadang cabang sedikit melakukan dekat master tetapi beberapa bulan lalu darinya)
Lihat di git versi terbaru (1.8.5 ke atas) Anda bisa mendapat manfaat dari% C (otomatis) dalam menghias placeholder% d
Dari sini yang Anda butuhkan adalah pemahaman yang baik tentang gitrevision untuk menyaring apa pun yang Anda butuhkan (seperti master..develop, di mana --simplify-merge dapat membantu cabang-cabang jangka panjang)
Kekuatan di belakang baris perintah adalah konfigurasi cepat berdasarkan kebutuhan Anda (memahami repo bukan konfigurasi log kunci yang unik, sehingga menambahkan --numstat, atau --raw, atau --name-status kadang-kadang diperlukan. Di sini git log dan alias cepat, kuat, dan (seiring waktu) grafik tercantik yang dapat Anda capai, bahkan lebih lagi, dengan output yang ditunjukkan secara default melalui pager (katakan kurang) Anda selalu dapat mencari dengan cepat di dalam hasil. Tidak yakin? Anda selalu dapat menguraikan hasilnya dengan proyek-proyek seperti gitgraph
Sangat bagus. Menambahkan ini ke konfigurasi saya. Tetapi saya merekomendasikan untuk mengubah% Cred% d% Creset menjadi% C (otomatis)% d% Creset yang akan memberikan warna berbeda untuk nama cabang jarak jauh atau lokal
MarkB42
17
Sangat sedikit mengutak-atik jawaban Slipp yang luar biasa , Anda dapat menggunakan aliasnya untuk login hanya satu cabang:
Dengan ini di tempat, git lakan menampilkan sesuatu seperti:
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 .
Ini adalah variasi terminal saya, mirip dengan banyak jawaban di sini. Saya suka menyesuaikan bendera yang dilewati lessuntuk mencegah pembungkus kata.
Saya mengatur ini ke alias untuk akses cepat karena perintahnya agak rumit.
Coba ditaa . Itu dapat mengubah diagram ASCII menjadi gambar. Meskipun tidak dirancang dengan mempertimbangkan cabang Git, saya terkesan dengan hasilnya.
Coba yang ini github.com/gugod/bin/blob/master/git-graphviz . Saya tidak memiliki semua dependensi di lingkungan perusahaan saya, jadi mengubah ioperintah - perintah itu menjadi perintah sederhana perl `git log [...]` bekerja untuk saya.
Ross Rogers
Jika Anda menggunakan mac dan ingin mencoba skrip ini, Anda dapat menggunakan perl brew install perl dotdan kemudian cpan common::sense IO::allmendapatkan dependensinya. Kemudian, hanya pipa output ke perintah yang sesuai, seperti git-graphviz | dot -Tpng -o repo.png. Namun, outputnya tidak jauh berbeda dengan git-big-picture .
jrhorn424
6
Ada grafik komit Git yang funky sebagai salah satu demo dari perpustakaan grafik web Raphael .
Demo ini statis, tetapi harus cukup mudah untuk mengambil kode dan menukar data statis mereka dengan data live - Saya pikir itu hanya data komit Git dalam format JSON.
@Ven: Terima kasih telah menunjukkan itu. Saya telah memperbaiki tautan yang rusak untuk Anda, walaupun harap diingat bahwa jawaban ini berusia lima tahun, dan dengan demikian mungkin ada solusi yang lebih baik baru-baru ini.
Output grafik git mirip tablelike yang bagus dan bersih untuk shell
dengan hash seperti biasa selain pohon grafik
atau di kolom tambahan
Sunting : Anda ingin segera memulai tanpa membaca penjelasan? Gunakan git alias, skrip atau cuplikan kode fungsi dari bagian EDIT 5 di bawah ini.
Dalam semua jawaban atas pertanyaan ini, tidak ada yang menunjukkan output mirip shell yang terlihat bagus untuk shell sejauh ini. Yang paling dekat adalah jawaban dari gospes tempat saya memulai.
Titik inti dalam pendekatan saya adalah hanya menghitung karakter pohon yang ditampilkan kepada pengguna. Kemudian isi mereka hingga panjang pribadi dengan spasi putih.
Selain git Anda membutuhkan alat ini
grep
tempel
printf
sed
seq
tr
toilet
sebagian besar di papan dengan distribusi linux.
Cuplikan kode adalah
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")
Untuk menghitung spasi putih yang dibutuhkan, kami menggunakan
sed -nl500 'l' <<< "$graph"
untuk mendapatkan semua karakter (hingga 500 per baris) daripada hanya memilih karakter pohon: * | / \ _ dan spasi putih dengan
grep -Eo '\\\\|\||\/|\ |\*|_'
akhirnya hitung dan kurangi hasilnya dari nilai panjang pilihan kami, yaitu 9 pada contoh.
Untuk menghasilkan jumlah spasi putih yang kami gunakan
seq -s' ' $whitespaces
dan potong nomor posisi dengan
tr -d '[:digit:]'
daripada menambahkannya ke akhir garis grafik kami. Itu dia!
Git memiliki opsi yang bagus untuk memformat panjang specifier yang sudah ada dengan sintaks '%><(amount_of_characters,truncate_option)', yang menambahkan spasi putih dari sisi '>' atau kanan '<' kiri dan dapat memotong karakter dari awal 'ltrunc', tengah 'mtrunc' atau akhir 'terpotong'.
Hal ini penting bahwa penggunaan atas printf cmd ini nilai panjang yang sama untuk kolom git yang sesuai.
Bersenang-senang untuk merancang keluaran tampak seperti tablel Anda sendiri bersih untuk kebutuhan Anda.
Tambahan:
Untuk mendapatkan nilai panjang yang tepat, Anda dapat menggunakan cuplikan berikut
dan gunakan $ max_chars sebagai nilai panjang yang tepat di atas.
EDIT 1 : Hanya perhatikan bahwa karakter garis bawah juga digunakan di pohon git dan edit cuplikan kode di atas. Jika ada karakter lain yang hilang, silakan tinggalkan komentar.
EDIT 2 : Jika Anda ingin menghilangkan tanda kurung di sekitar entri cabang dan tag, cukup gunakan "% D" alih-alih "% d" dalam perintah git, seperti pada EDIT 3.
EDIT 3 : Mungkin opsi warna "otomatis" adalah yang paling Anda sukai untuk entri cabang dan tag?
Ubah bagian ini dari perintah git (warna 214 )
%C(214)%>(15,trunc)%D%C(reset)
ke otomatis
%C(auto)%>(15,trunc)%D%C(reset)
EDIT 4 : Atau Anda suka campuran warna Anda sendiri untuk bagian itu, output mewah dengan kepala berkedip?
Untuk dapat mendesain kepala, nama cabang dan tag terlebih dahulu kita membutuhkan opsi warna "otomatis" dalam perintah git kita seperti pada EDIT 3.
Kemudian kita bisa mengganti nilai warna know dengan kita sendiri dengan menambahkan 3 baris ini
# 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}
dalam cuplikan kode kami. Nilai penggantian menghasilkan warna di atas.
Misalnya nilai penggantian kepala adalah
3;5;1;38;5;196
dimana 3; singkatan dari italic, 5; untuk berkedip dan 1; 38; 5; 196 untuk warnanya. Untuk info lebih lanjut mulai dari sini. Catatan: Perilaku ini tergantung pada terminal favorit Anda dan karena itu mungkin tidak dapat digunakan.
TETAPI Anda dapat memilih nilai warna apa pun yang Anda inginkan.
Jika Anda membutuhkan output pada konsol Anda untuk warna yang akurat (gambar di atas diperkecil oleh stackoverflow), Anda dapat menghasilkan output dengan
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" ###
}
dan panggil fungsi git_tably (berasal dari tablelike) langsung di bawah jalur proyek git Anda atau dari mana pun Anda inginkan dengan jalur proyek git Anda sebagai parameter pertama.
2) sebagai skrip shell :
Saya menggunakannya dengan opsi untuk meneruskan direktori proyek git sebagai parameter pertama atau jika kosong, ambil direktori kerja seperti perilaku normal. Secara keseluruhan kami miliki
# 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) sebagai alias git :
Mungkin cara paling nyaman adalah menambahkan alias git di .gitconfig Anda
Anda harus menjelaskan dalam jawaban Anda bagaimana potongan bash ini akan berubah menjadi perintah seperti git log. Orang dapat menemukan kegunaan dengan melihat jawaban yang Anda tautkan, tetapi jawaban harus lengkap
Andras Deak
Maksud Anda saya harus menjelaskan cmit git log secara detail? Atau bisakah Anda memberi saya contoh apa yang Anda lewatkan?
onemorequestion
Catatan: Output dari perintah git log yang luar biasa digunakan oleh snippet ini untuk menerima output seperti tab pada terminal. Jadi, sebaliknya seperti yang Anda sebutkan;)
onemorequestion
Saya pikir Anda tidak mengetik 20 baris bash setiap kali Anda membutuhkan ini. Masuk akal untuk mendefinisikan ini sebagai fungsi bash atau alias git. Sebagian besar pembaca tidak akan repot-repot mencoba menyelesaikan kode Anda agar mudah digunakan. Itu yang saya maksud. Jika Anda hanya meletakkan kode dalam file sh acak di jalur Anda, Anda dapat mengabaikan saya.
Andras Deak
1
Saya melihat. Terima kasih atas saran Anda. Saya akan mengedit jawaban saya dan menambahkan alias seperti itu. Biasanya saya menggunakan file untuk perintah "panjang" seperti yang Anda sebutkan. Tetapi untuk memiliki kedua cara yang ditulis di sini jauh lebih nyaman, saya setuju.
onemorequestion
5
beberapa alias di ~ / .oh-my-zsh / plugins / git / git.plugin.zsh
Untuk pengguna OSX, saya telah mengambil contoh @gospes dan sedikit memodifikasinya untuk gsed ( gnu-seddiinstal melalui homebrew) dan menyesuaikan warna (untuk bekerja dengan latar belakang hitam, tidak yakin bagaimana contoh asli dapat membuat seperti di dalam contoh karena ia menetapkan teks hitam pada terminal dengan latar belakang hitam).
Kunci untuk OSX adalah menginstal gnu sed (yang memiliki opsi -r). Paling mudah dilakukan dengan homebrew, yang tidak akan menimpa sistem yang diinstal sed, tetapi sebaliknya akan menginstal gnu sed sebagai "gsed". Semoga ini bisa membantu @ SlippD. Thompson yang berkomentar di atas tentang OSX tidak berfungsi.
Jawaban:
Pembaruan: Jawaban ini jauh lebih menarik daripada 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. Tetapi sekarang ada jawaban yang jauh lebih berlaku untuk Q ini, seperti fracz , Jubobs , atau Harry Lee ! Silakan pilih mereka !!
Pembaruan 2: Saya telah memposting versi perbaikan dari jawaban ini ke topologi cabang Visualisasi di pertanyaan git , karena jauh lebih tepat di sana. Versi itu termasuk
lg3
, yang menampilkan info pembuat dan pengangkut, jadi Anda harus memeriksanya. Meninggalkan jawaban ini karena alasan historis (& perwakilan, saya akui), meskipun saya benar-benar tergoda untuk menghapusnya saja.2 ¢ saya: Saya memiliki dua alias yang biasanya saya masukkan ke
~/.gitconfig
file saya :git lg
Sayagit lg1
terlihat seperti ini:dan
git lg2
terlihat seperti ini:sumber
#202020
/#555555
, Merah:#5d1a14
/#da4939
, Hijau:#424e24
/#a5c261
, Kuning:#6f5028
/#ffc66d
, Biru:#263e4e
/#6d9cbe
, Magenta:#3e1f50
/#a256c7
, Cyan:#234e3f
/#62c1a1
, dan Putih:#979797
/#ffffff
.--date=relative
dan--abbrev-commit
berlebihan karena Anda secara eksplisit menggunakan%cr
dan%h
, masing-masing.%C(auto)
modifier ke refnames (%d
) untuk mendapatkan warna yang lebih bagus. Lihat 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
Banyak jawaban di sini bagus, tetapi bagi mereka yang hanya menginginkan satu baris jawaban langsung tanpa harus mengatur alias atau tambahan apa pun, ini dia:
Tidak semua orang akan melakukannya
git log
setiap saat, tetapi ketika Anda membutuhkannya, ingat saja:sumber
git config --global alias.adog "log --all --decorate --oneline --graph"
--all
cari begitu lama hingga saya akan menangis (T_T) TERIMA KASIH!Untuk output teks Anda dapat mencoba:
atau:
atau: inilah alias graphviz untuk menggambar grafik DAG.
Saya pribadi menggunakan
gitx
,gitk --all
dangitnub
.sumber
--abbrev-commit --decorate
, dan kemudian sempurna!--abbrev-commit
jika Anda menggunakan--oneline
git log --graph --oneline --decorate --date=relative --all
yang--date
argumen tidak berguna. Saya tidak dapat melihat tanggal yang ditampilkan di log.Gitgraph.js memungkinkan untuk menggambar cabang-cabang git cantik tanpa repositori. Cukup tulis kode Javascript yang mengonfigurasi cabang Anda dan melakukan dan merendernya di browser.
atau dengan
metro
templat:atau dengan pesan komit, penulis, dan tag:
Uji dengan JSFiddle .
Hasilkan dengan Git Grapher oleh @bsara.
sumber
Dibangun di atas TikZ & PGF ,
gitdags
adalah paket kecil LaTeX yang memungkinkan Anda untuk dengan mudah menghasilkan grafik vektor-komitmen, dan banyak lagi.Pembuatan grafik komit repositori yang sudah ada secara otomatis bukanlah tujuan dari
gitdags
; grafik yang dihasilkannya hanya dimaksudkan untuk tujuan pendidikan .Saya sering menggunakannya untuk menghasilkan grafik untuk jawaban saya atas pertanyaan Git, sebagai alternatif untuk grafik komit ASCII:
Berikut adalah contoh grafik yang menunjukkan efek rebase sederhana:
sumber
:)
latex input.tex
untuk menghasilkan dvi, dan akhirnya menggunakandvisvgm input.dvi
untuk menghasilkan SVG dengan transparansi. Konversi dari SVG ke format raster seperti PNG cukup mudahconvert -antialias -density 300 -background none input.svg output.png
. Omong-omong, gambar-gambar ini terlihat luar biasa dengan transparansi penuh. Masih bekerja pada masalah font ... i.imgur.com/1Xu2Ry5.pnggitdags
sedang dalam perjalanan!Gitg adalah tiruan dari Gitk dan GitX untuk GNOME (ini juga berfungsi pada KDE dll.) Yang menunjukkan grafik berwarna cantik.
Ini dikembangkan secara aktif (pada 2012). Ini memungkinkan Anda mengurutkan komit (grafik graph) baik secara kronologis atau topologis , dan menyembunyikan komit yang tidak mengarah ke cabang yang dipilih.
Ini berfungsi dengan baik dengan repositori besar dan grafik ketergantungan kompleks.
Contoh tangkapan layar, menampilkan repositori linux-git dan linux-2.6:
sumber
SourceTree sangat bagus. Itu memang mencetak sejarah ukuran sedang dan grafik cabang dan tampan: (berikut ini dilakukan pada proyek Git eksperimental hanya untuk melihat beberapa cabang). Mendukung Windows 7+ dan Mac OS X 10.6+.
http://www.sourcetreeapp.com/
sumber
Saya baru saja menulis satu alat yang dapat menghasilkan grafik komit git cantik menggunakan HTML / Kanvas.
Dan menyediakan plugin jQuery yang membuatnya mudah digunakan.
[github] https://github.com/tclh123/commits-graph
Pratinjau:
sumber
git-forest
adalah skrip perl yang sangat baik yang telah saya gunakan selama lebih dari satu tahun dan saya hampir tidak menggunakangit log
perintah secara langsung lagi.Ini adalah beberapa hal yang saya sukai dari skrip ini:
--reverse
dengan output grafik, yang tidak mungkin dengangit log
perintah biasa .git log
internal untuk mengambil daftar commit, sehingga semua opsi yang Anda berikangit log
juga dapat diteruskan ke skrip ini.Saya memiliki alias menggunakan
git-forest
sebagai berikut:Ini adalah bagaimana output terlihat di terminal:
sumber
Saya menulis alat web untuk mengubah log git menjadi grafik SVG yang cantik: Bit-Booster - Alat Menggambar Grafik Komit Offline
Unggah output dari
git log --pretty='%h|%p|%d'
langsung ke alat dan kemudian klik tautan "unduh graph.svg".Alat ini murni sisi klien, dan tidak ada data Git Anda yang dibagikan dengan server saya. Anda juga dapat menyimpan HTML + JS secara lokal dan menjalankannya menggunakan URL "file: ///". Diverifikasi pada Chrome 48 dan Firefox 43 di Ubuntu 12.04.
Ini menghasilkan HTML yang dapat diposting langsung ke halaman mana pun (termasuk mesin blogging blogspot!). Lihatlah beberapa posting blog di sini:
http://bit-booster.blogspot.ca/
Berikut screenshot dari contoh file HTML yang dihasilkan oleh alat:
http://bit-booster.com/graph.html (alat)
sumber
Berdasarkan skrip Graphviz yang saya temukan dalam jawaban untuk pertanyaan terkait , saya meretas skrip ruby yang membuat tampilan ringkasan repositori git. Ini menghilangkan semua sejarah linier dan hanya menunjukkan komitmen "menarik", yaitu yang memiliki banyak orang tua, banyak anak, atau ditunjukkan oleh cabang atau tag. Berikut cuplikan grafik yang dihasilkannya untuk jquery :
git-big-picture dan BranchMaster adalah alat serupa yang mencoba menunjukkan hanya struktur tingkat tinggi dari grafik, dengan hanya menampilkan bagaimana tag, cabang, penggabungan, dll terkait.
Pertanyaan ini memiliki beberapa opsi lagi.
sumber
Saya telah menambahkan tiga perintah kustom:
git tree
,git stree
dangit vtree
. Saya akan membahasnya dalam urutan itu.Dengan
git stree
dangit vtree
saya telah menggunakan bash untuk membantu memformat.EDIT: Ini bekerja dengan git versi 1.9a. Nilai warna 'otomatis' tampaknya memulai debutnya dalam rilis ini. Ini tambahan yang bagus karena nama cabang akan mendapatkan warna yang berbeda. Ini membuatnya lebih mudah untuk membedakan antara cabang lokal dan remote misalnya.
sumber
fatal: bad color value 'auto' for variable '--pretty format'
:(sed: illegal option -- r
Tergantung pada apa yang mereka terlihat. Saya menggunakan gitx yang membuat gambar seperti ini:
Anda dapat membandingkan
git log --graph
vs gitk pada penggabungan gurita 24-arah (aslinya dari http://clojure-log.n01se.net/date/2008-12-24.html ):sumber
Untuk output teks yang lebih rinci, silakan coba:
Anda dapat menulis alias di $ HOME / .gitconfig
sumber
Ini adalah pendapat saya tentang masalah ini:
Tangkapan layar:
Pemakaian:
git hist
- Tampilkan riwayat cabang saat inigit hist --all
- Tampilkan grafik semua cabang (termasuk remote)git hist master devel
- Tunjukkan hubungan antara dua atau lebih cabanggit hist --branches
- Tampilkan semua cabang lokalMenambahkan
--topo-order
untuk mengurutkan komit secara topologis, bukan berdasarkan tanggal (default dalam alias ini)Manfaat:
--decorate
, jadi dengan warna terpisah untuk nama cabang yang berbedaMendirikan:
sumber
gitg : penampil repositori berbasis gtk, itu baru tapi menarik dan bermanfaat
http://git.gnome.org/browse/gitg
Saya menggunakannya saat ini
sumber
GitX
dan cukup bagus. RekomendasikanMeskipun terkadang saya menggunakan gitg , selalu kembali ke baris perintah:
Seperti yang Anda lihat, hampir merupakan alias hemat tombol, berdasarkan:
Lihat di git versi terbaru (1.8.5 ke atas) Anda bisa mendapat manfaat dari% C (otomatis) dalam menghias placeholder% d
Dari sini yang Anda butuhkan adalah pemahaman yang baik tentang gitrevision untuk menyaring apa pun yang Anda butuhkan (seperti master..develop, di mana --simplify-merge dapat membantu cabang-cabang jangka panjang)
Kekuatan di belakang baris perintah adalah konfigurasi cepat berdasarkan kebutuhan Anda (memahami repo bukan konfigurasi log kunci yang unik, sehingga menambahkan --numstat, atau --raw, atau --name-status kadang-kadang diperlukan. Di sini git log dan alias cepat, kuat, dan (seiring waktu) grafik tercantik yang dapat Anda capai, bahkan lebih lagi, dengan output yang ditunjukkan secara default melalui pager (katakan kurang) Anda selalu dapat mencari dengan cepat di dalam hasil. Tidak yakin? Anda selalu dapat menguraikan hasilnya dengan proyek-proyek seperti gitgraph
sumber
Sangat sedikit mengutak-atik jawaban Slipp yang luar biasa , Anda dapat menggunakan aliasnya untuk login hanya satu cabang:
Dengan meninggalkan
--all
Anda sekarang dapat melakukannyaatau bahkan
sumber
Saya menyarankan
tig
https://github.com/jonas/tig , alat baris perintah yang jauh lebih baik untuk git.Anda dapat menggunakan homebrew untuk menginstal tig di macOS:
sumber
Saya memiliki
git log
alias ini~/.gitconfig
untuk melihat riwayat grafik:Dengan ini di tempat,
git l
akan menampilkan sesuatu seperti:Di Git 2.12 + Anda bahkan dapat menyesuaikan warna garis grafik menggunakan
log.graphColors
opsi 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 .sumber
git log --graph --oneline
hanya untuk memastikan penumpang tidak tersesatApakah kamu sudah mencoba
gitk
atau tidakgitk --all
? Namun tidak memiliki fungsi print / save img.sumber
--all
menunjukkan Anda semua cabang.GitGraph
Menghasilkan representasi PNG atau SVG dari riwayat komit Git Anda.
https://code.google.com/p/gitgraph
sumber
Ini adalah variasi terminal saya, mirip dengan banyak jawaban di sini. Saya suka menyesuaikan bendera yang dilewati
less
untuk mencegah pembungkus kata.Saya mengatur ini ke alias untuk akses cepat karena perintahnya agak rumit.
sumber
Coba ditaa . Itu dapat mengubah diagram ASCII menjadi gambar. Meskipun tidak dirancang dengan mempertimbangkan cabang Git, saya terkesan dengan hasilnya.
Sumber (file txt):
Perintah:
Hasil:
Ini juga mendukung warna latar belakang, garis putus-putus, berbagai bentuk dan banyak lagi. Lihat contohnya .
sumber
Jika repositori Anda berada di Gitlab, Anda dapat menggunakan representasi grafiknya seperti yang disajikan sebagai SVG di browser Anda.
Pergi ke tampilan grafik repositori Anda, misalnya https://gitlab.com/gitlab-org/gitter/webapp/network/develop
Gulir grafik ke bawah (itu malas memuat komit!)
Gunakan inspektur browser Anda untuk menyalin elemen SVG ke file baru
Buka di renderer pilihan Anda, misalnya Inkscape
sumber
Saya tidak tahu tentang alat langsung, tapi mungkin Anda bisa meretas skrip untuk mengekspor data ke dalam format dot dan merendernya dengan graphviz.
sumber
io
perintah - perintah itu menjadi perintah sederhana perl `git log [...]` bekerja untuk saya.brew install perl dot
dan kemudiancpan common::sense IO::all
mendapatkan dependensinya. Kemudian, hanya pipa output ke perintah yang sesuai, sepertigit-graphviz | dot -Tpng -o repo.png
. Namun, outputnya tidak jauh berbeda dengan git-big-picture .Ada grafik komit Git yang funky sebagai salah satu demo dari perpustakaan grafik web Raphael .
Demo ini statis, tetapi harus cukup mudah untuk mengambil kode dan menukar data statis mereka dengan data live - Saya pikir itu hanya data komit Git dalam format JSON.
Demo ada di sini: http://dmitrybaranovskiy.github.io/raphael/github/impact.html
sumber
Output grafik git mirip tablelike yang bagus dan bersih untuk shell
dengan hash seperti biasa selain pohon grafik
atau di kolom tambahan
Sunting : Anda ingin segera memulai tanpa membaca penjelasan? Gunakan git alias, skrip atau cuplikan kode fungsi dari bagian EDIT 5 di bawah ini.
Dalam semua jawaban atas pertanyaan ini, tidak ada yang menunjukkan output mirip shell yang terlihat bagus untuk shell sejauh ini. Yang paling dekat adalah jawaban dari gospes tempat saya memulai.
Titik inti dalam pendekatan saya adalah hanya menghitung karakter pohon yang ditampilkan kepada pengguna. Kemudian isi mereka hingga panjang pribadi dengan spasi putih.
Selain git Anda membutuhkan alat ini
sebagian besar di papan dengan distribusi linux.
Cuplikan kode adalah
Untuk menghitung spasi putih yang dibutuhkan, kami menggunakan
untuk mendapatkan semua karakter (hingga 500 per baris) daripada hanya memilih karakter pohon: * | / \ _ dan spasi putih dengan
akhirnya hitung dan kurangi hasilnya dari nilai panjang pilihan kami, yaitu 9 pada contoh.
Untuk menghasilkan jumlah spasi putih yang kami gunakan
dan potong nomor posisi dengan
daripada menambahkannya ke akhir garis grafik kami. Itu dia!
Git memiliki opsi yang bagus untuk memformat panjang specifier yang sudah ada dengan sintaks
'%><(amount_of_characters,truncate_option)'
, yang menambahkan spasi putih dari sisi '>' atau kanan '<' kiri dan dapat memotong karakter dari awal 'ltrunc', tengah 'mtrunc' atau akhir 'terpotong'.Hal ini penting bahwa penggunaan atas printf cmd ini nilai panjang yang sama untuk kolom git yang sesuai.
Bersenang-senang untuk merancang keluaran tampak seperti tablel Anda sendiri bersih untuk kebutuhan Anda.
Tambahan:
Untuk mendapatkan nilai panjang yang tepat, Anda dapat menggunakan cuplikan berikut
dan gunakan $ max_chars sebagai nilai panjang yang tepat di atas.
EDIT 1 : Hanya perhatikan bahwa karakter garis bawah juga digunakan di pohon git dan edit cuplikan kode di atas. Jika ada karakter lain yang hilang, silakan tinggalkan komentar.
EDIT 2 : Jika Anda ingin menghilangkan tanda kurung di sekitar entri cabang dan tag, cukup gunakan "% D" alih-alih "% d" dalam perintah git, seperti pada EDIT 3.
EDIT 3 : Mungkin opsi warna "otomatis" adalah yang paling Anda sukai untuk entri cabang dan tag?
Ubah bagian ini dari perintah git (warna 214 )
ke otomatis
EDIT 4 : Atau Anda suka campuran warna Anda sendiri untuk bagian itu, output mewah dengan kepala berkedip?
Untuk dapat mendesain kepala, nama cabang dan tag terlebih dahulu kita membutuhkan opsi warna "otomatis" dalam perintah git kita seperti pada EDIT 3.
Kemudian kita bisa mengganti nilai warna know dengan kita sendiri dengan menambahkan 3 baris ini
sebelum baris
dalam cuplikan kode kami. Nilai penggantian menghasilkan warna di atas.
Misalnya nilai penggantian kepala adalah
dimana 3; singkatan dari italic, 5; untuk berkedip dan 1; 38; 5; 196 untuk warnanya. Untuk info lebih lanjut mulai dari sini. Catatan: Perilaku ini tergantung pada terminal favorit Anda dan karena itu mungkin tidak dapat digunakan.
TETAPI Anda dapat memilih nilai warna apa pun yang Anda inginkan.
GAMBARAN UMUM nilai git color dan setara ANSI
Anda menemukan daftar dengan opsi git color / style di sini .
Jika Anda membutuhkan output pada konsol Anda untuk warna yang akurat (gambar di atas diperkecil oleh stackoverflow), Anda dapat menghasilkan output dengan
di jalur proyek git Anda yang menggunakan komit pertama dari keluaran log git Anda.
EDIT 5 : Seperti yang disebutkan anggota "Andras Deak", ada beberapa cara bagaimana menggunakan kode ini:
1) sebagai alias :
alias tidak menerima parameter tetapi fungsi bisa , oleh karena itu tetapkan saja .bashrc Anda
dan panggil fungsi git_tably (berasal dari tablelike) langsung di bawah jalur proyek git Anda atau dari mana pun Anda inginkan dengan jalur proyek git Anda sebagai parameter pertama.
2) sebagai skrip shell :
Saya menggunakannya dengan opsi untuk meneruskan direktori proyek git sebagai parameter pertama atau jika kosong, ambil direktori kerja seperti perilaku normal. Secara keseluruhan kami miliki
3) sebagai alias git :
Mungkin cara paling nyaman adalah menambahkan alias git di .gitconfig Anda
Daripada menelepon di
git tably
bawah jalur proyek apa pun.Git sangat kuat sehingga Anda dapat mengubah kepala, tag, ... langsung seperti yang ditunjukkan di atas dan diambil dari sini .
Opsi mewah lainnya adalah memilih warna pohon yang paling Anda sukai
yang memberi Anda tampilan log git log yang tampak gila tapi selalu seperti tab
Terlalu banyak kedipan! Hanya untuk menunjukkan apa yang mungkin. Terlalu sedikit warna yang ditentukan menyebabkan pengulangan warna.
Referensi .gitconfig yang lengkap hanya dengan satu klik saja.
LAGI: Bersenang-senanglah untuk mendesain sendiri tampilan yang mirip tablelike dengan kebutuhan Anda.
sumber
beberapa alias di ~ / .oh-my-zsh / plugins / git / git.plugin.zsh
sumber
Untuk pengguna OSX, saya telah mengambil contoh @gospes dan sedikit memodifikasinya untuk gsed (
gnu-sed
diinstal melalui homebrew) dan menyesuaikan warna (untuk bekerja dengan latar belakang hitam, tidak yakin bagaimana contoh asli dapat membuat seperti di dalam contoh karena ia menetapkan teks hitam pada terminal dengan latar belakang hitam).Kunci untuk OSX adalah menginstal gnu sed (yang memiliki opsi -r). Paling mudah dilakukan dengan homebrew, yang tidak akan menimpa sistem yang diinstal sed, tetapi sebaliknya akan menginstal gnu sed sebagai "gsed". Semoga ini bisa membantu @ SlippD. Thompson yang berkomentar di atas tentang OSX tidak berfungsi.
sumber