Tidak dapat menampilkan pohon Git di terminal

440

Artikel lawas Killswitchcollective.com, 30 Juni 2009 , memiliki input dan output berikut

git co master
git merge [your_branch]
git push

upstream    A-B-C-D-E            A-B-C-D-E-F-G
                 \        ---->               \
your branch       C-D-E                        G

Saya tertarik bagaimana Anda mendapatkan pohon like-view of commit di terminal Anda tanpa menggunakan Gitk atau Gitx di OS / X.

Bagaimana Anda bisa mendapatkan tampilan seperti komitmen di terminal?

Léo Léopold Hertz 준영
sumber
2
Itu tidak penting untuk pertanyaan itu, tetapi artikel tersebut tidak lagi tersedia. Salinan dalam tembolok tersedia melalui Internet Archive: web.archive.org/web/20110831142839/http://…
Alan De Smet

Jawaban:

796

Bagaimana Anda bisa mendapatkan tampilan seperti komitmen di terminal?

git log --graph --oneline --all

adalah awal yang baik.

Anda mungkin mendapatkan beberapa surat aneh. Mereka adalah kode ASCII untuk warna dan struktur. Untuk mengatasi masalah ini tambahkan yang berikut ke .bashrc:

export LESS="-R"

sehingga Anda tidak perlu menggunakan filter ASCII Tig oleh

git log --graph --pretty=oneline --abbrev-commit | tig   // Masi needed this 

Grafik berbasis teks artikel dari Git-ready berisi opsi lain:

git log --graph --pretty=oneline --abbrev-commit

grafik log git

Mengenai artikel yang Anda sebutkan, saya akan pergi dengan jawaban Pod : output buatan tangan ad-hoc.


Jakub Narębski menyebutkan di komentar tig , antarmuka mode teks berbasis ncurses untuk git. Lihat rilis mereka .
Ia menambahkan sebuah --graphpilihan kembali pada tahun 2007.

VONC
sumber
1
Saya baru saja mengujinya di repo saya. Ini berfungsi tetapi saya menggunakan Windows dengan MSysGit1.6.3.
VonC
files.getdropbox.com diblokir di sini di tempat kerja :( Saya akan melihat gambar Anda dalam waktu sekitar satu jam, saatnya untuk pulang.
VonC
@ Vonc: Saya sekarang mengetik dua untuk perintah pertama. Saya mendapatkan tampilan yang sama seperti pada gambar untuk perintah kedua.
Léo Léopold Hertz 준영
9
Ada juga 'tig', antarmuka mode teks untuk git (menggunakan ncurses), yang memiliki tampilan riwayat grafis di terminal sebelum ada opsi '--graph' untuk git-log.
Jakub Narębski
2
Saya menemukan --decoratesangat diperlukan pada tampilan semacam ini juga - itu menunjukkan Anda nama ref (cabang, jarak jauh dan lokal) di samping nama komit disingkat.
Matt Enright
312

Solusi adalah membuat Alias ​​di komputer Anda .gitconfigdan menyebutnya dengan mudah:

[alias]
    tree = log --graph --decorate --pretty=oneline --abbrev-commit

Dan ketika Anda menyebutnya lain kali, Anda akan menggunakan:

git tree

Untuk meletakkannya di ~ / .gitconfig Anda tanpa harus mengeditnya, Anda dapat melakukan:

git config --global alias.tree "log --graph --decorate --pretty=oneline --abbrev-commit"  

(Jika Anda tidak menggunakan --global itu akan meletakkannya di .git / confo dari repo Anda saat ini.)

Marouane Gazanayi
sumber
1
Bagaimana ini bukan alias default? Saya kira itu akan membuat CLI Git sedikit lebih menyebalkan untuk digunakan dan kita tidak bisa memilikinya ...
Timmmm
123
git log --oneline --decorate --all --graph

Pohon visual dengan nama cabang disertakan.

Gunakan ini untuk menambahkannya sebagai alias

git config --global alias.tree "log --oneline --decorate --all --graph"

Anda menyebutnya dengan

git tree

Git Tree

Sebastian Patten
sumber
2
Sangat bagus, ini. Saya menggunakannya dalam kombinasi dengan less -Sseperti yang dijelaskan di sini , untuk mencegah garis-garis yang terbungkus mengaburkan pohon.
djvg
60

tig

Jika Anda ingin pohon interaktif , Anda dapat menggunakan tig. Itu dapat diinstal brewdi OSX dan apt-getdi Linux.

brew install tig
tig

Ini yang kau dapat:

masukkan deskripsi gambar di sini

Mohsen
sumber
Bisakah Anda mendapatkan pohon seperti dalam jawaban VonC oleh Tig saat ini? Kami menggunakan Tig dalam jawaban VonC hanya sebagai filter Ascii.
Léo Léopold Hertz 준영
4

Mempertahankan perintah Anda akan membuatnya lebih mudah diingat:

git log --graph --oneline
JSON C11
sumber
1

Saya akan menyarankan siapa pun untuk menuliskan perintah lengkap

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

daripada membuat alias.

Ada baiknya untuk memasukkan perintah ke kepala Anda, sehingga Anda mengetahuinya dengan kata lain yaitu tidak bergantung pada alias ketika Anda mengganti mesin.

Pemain saksofon
sumber
2
Sebenarnya git log --all --decorate --oneline --graph, setelah mnemonik git log a dog;)
VonC
@VonC Hasil akhirnya sama. Bagaimanapun, saya setuju dengan Anda. Terima kasih untuk umpan baliknya.
Saxophonist
Ya, itulah yang ingin disampaikan oleh smiley ;)di akhir komentar saya sebelumnya (tidak sempurna): Anda dapat menggunakan opsi itu dalam urutan apa pun yang Anda inginkan. Saya baru saja menemukan "log a dog" lucu :)
VonC
1
Atau Anda bisa scp ~/.bashrc root@remote:~/dan alias Anda bergerak sangat cepat.
Admin