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?


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.


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.)


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


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


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

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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.