Terminalde Git ağacı gösterilemiyor


439

Killswitchcollective.com'un 30 Haziran 2009 tarihli eski yazısı aşağıdaki giriş ve çıkışlara sahiptir

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

OS / X'te Gitk veya Gitx kullanmadan terminalinizdeki taahhütlerin ağacını nasıl görüntüleyeceğinizi merak ediyorum.

Terminaldeki ağaçların görünümünü benzer şekilde nasıl edinebilirsiniz?


2
Soru için önemli değil, ancak söz konusu makale artık mevcut değil. Önbelleğe alınmış bir kopyaya İnternet Arşivi'nden ulaşılabilir
Alan De Smet

Yanıtlar:


795

Terminaldeki ağaçların görünümünü benzer şekilde nasıl edinebilirsiniz?

git log --graph --oneline --all

iyi bir başlangıçtır.

Garip mektuplar alabilirsiniz. Renkler ve yapı için ASCII kodlarıdır. Bu sorunu çözmek için aşağıdakileri ekleyin .bashrc:

export LESS="-R"

Tig'in ASCII filtresini kullanmanıza gerek kalmayacak şekilde

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

Git-ready ürününün metin tabanlı grafiği başka seçenekler içerir:

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

git log grafiği

Bahsettiğiniz makaleye gelince, Pod'un cevabı ile giderdim : ad-hoc el yapımı çıktı.


Jakub Narębski yorumlarda tig , git için ncurses tabanlı bir metin modu arabirimindenbahsediyor. Bültenlerini görün. 2007'de bir seçenek
ekledi.--graph


1
Sadece depomda test ettim. Çalışıyor ama MSysGit1.6.3 ile Windows'tayım.
VonC

files.getdropbox.com işte burada engellendi :( Resminizi yaklaşık bir saat içinde göreceğim, eve dönme zamanı.
VonC

@Vonc: Şimdi ilk komut için iki tane yazdım. İkinci komutun resminde olduğu gibi benzer bir görünüm elde ediyorum.
Léo Léopold Hertz 준영

9
Git için "--graf" seçeneği bulunmadan önce terminalde grafik geçmişi görünümü olan git (ncurses kullanarak) için "tig" metin modu arabirimi de vardır.
Jakub Narębski

2
--decorateBu tür bir ekranda da vazgeçilmez buluyorum - kısaltılmış taahhüt adının yanı sıra size ref isimlerini (şubeler, uzak ve yerel) gösterir.
Matt Enright

312

Bir çözüm, içinde bir Takma ad oluşturmak .gitconfigve kolayca çağırmaktır:

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

Ve bir dahaki sefere aradığınızda şunları kullanırsınız:

git tree

Düzenlemek zorunda kalmadan ~ / .gitconfig dosyanıza koymak için şunları yapabilirsiniz:

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

(--Global kullanmazsanız, mevcut deponuzun .git / config dosyasına koyar.)


1
Bu nasıl varsayılan bir takma ad değildir?
Git'in CLI'sini

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

Şube adlarını içeren görsel bir ağaç.

Diğer ad olarak eklemek için bunu kullanın

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

İle ara

git tree

Git Ağacı


2
Çok güzel, bu. Sarılmış çizgilerin ağacı şaşırtmasını önlemek için buradaless -S tarif edildiği gibi kullanıyorum .
djvg

60

tig

Eğer bir istiyorsanız interaktif ağacı, kullanabilirsiniz tig. brewOSX ve apt-getLinux'ta kurulabilir .

brew install tig
tig

Bu ne olsun:

resim açıklamasını buraya girin


Şu anda Tig tarafından VonC'nin cevabında olduğu gibi bir ağaç bulabilir misin? Tig'i VonC'nin cevabında sadece Ascii filtresi olarak kullanıyoruz.
Léo Léopold Hertz 준영

4

Komutlarınızı kısa tutmak hatırlamalarını kolaylaştırır:

git log --graph --oneline

1

Herkesin tam komutu yazmasını öneririm

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

takma ad oluşturmak yerine.

Komutları kafanıza sokmak iyidir, bu yüzden onu ezbere bilirsiniz, yani makineleri değiştirdiğinizde takma adlara bağımlı olmazsınız.


2
Aslında git log --all --decorate --oneline --graph, anımsatıcıdan sonra git log a dog;)
VonC

@VonC Nihai sonuç aynı. Her neyse, sana katılıyorum. Geri dönüşünüz için teşekkür ederiz.
Saksafoncu

Evet, önceki yorumumun ;)sonundaki gülen yüz (kusurlu olarak) iletmeye çalışıyordu: bu seçeneği istediğiniz sırayla kullanabilirsiniz. Ben sadece "bir köpek günlüğü" komik buluyorum :)
VonC

1
Ya da siz scp ~/.bashrc root@remote:~/ve takma adlarınız çok hızlı bir şekilde ilerleyebilir.
1919
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.