git diff renkleri yanlış gösteriyor


46

Tüm git komutlarından renkli çıktı almak için aşağıdakileri ayarlarım:

git config --global color.ui true

Ancak, bunun için böyle bir çıktı üretir git diff,git log

git diff ekran görüntüsü

Oysa git statusekran gibi iyi komutlar

git status ekran görüntüsü

Kaçan renk kodlarını neden yalnızca bazı komutlarda tanımıyor ve nasıl düzeltebilirim?

xterm-256colorOS X 10.8.2'de iTerm 2'yi (terminal türü ) ve kabuğum olarak zsh kullanıyorum

zsh --version
zsh 5.0.0 (x86_64-apple-darwin12.0.0)

git --version                                                                                                                      
git version 1.7.9.6 (Apple Git-31.1)

Yanıtlar:


65

Terminale gösterilen kaçış karakteriyle görüntülenen renkleri değiştirmesini söyleyen kaçış dizilerini görüyorsunuz, ESCarzu edilen davranış ise kaçış dizilerinin amaçlanan etkisine sahip olmasıdır.

Gibi Komutları git diffve git logbir içine boru üretimlerini çağrı cihazı , lessvarsayılan olarak. Git less, kontrol karakterlerinin kontrol etkisine sahip olmalarına izin vermeye çalıştığını söylemeye çalışıyor , ancak bu sizin için çalışmıyor.

lessÇağrı cihazınız buysa , ancak ortam değişkenini LESSiçermeyen bir değere ayarladınız -rveya -Rgit, lessrenkleri gösteremez . Normalde geçer LESS=-FRSX, ancak LESSzaten ortamda ayarlanmışsa değil . Düzeltme, git tarafından çağrıldığında renkleri gösterme -Rseçeneğini açık bir şekilde açıkça belirtmektir less:

git config --global core.pager 'less -R'

Eğer lesssenin çağrı cihazı, ya geçiş değil lesssenin çağrı cihazı ekran renklerini nasıl dışarı veya rakam.

Bir çağrı cihazı yürütmesini yaptığında sizi ekran renkleri için git istemiyorsanız, set color.uiiçin autoyerine true.


Ah teşekkürler. Bunun renkleri göstermesi lessgerektiğini bilmeme rağmen -R, bunu unuttum git logve git diffçıktıları aktardım less. Thanks :)

5
Teşekkür ederim! Varsayılan fark etmemişti ~/.profileFreeBSD vardıPAGER=more; export PAGER
Jeffrey Goldberg

Teşekkürler. Ben vardı LESSayarlı -Kçünkü ben edememek gibi CTRL-Cher şey. Bu değişkenle korkak bir şey olduğunu düşündüm ve şimdi nasıl düzelteceğimi biliyorum.
trysis,

2

Gilles'un cevabını iyileştirerek , eski $LESSseçeneklerinizi git config'inizde (örneğin:) kullanarak koruyabilirsiniz ~/.gitconfig:

[core]
pager = less -+$LESS -FRX

Quazgar'ın cevabı iyidir. Ben LESS=-ibashrc'imde var, bu yüzden yapmak zorunda kalacağım `[core] pager = daha az $ LESS -FR` X'i çıkardım çünkü X ile mevcut terminal içeriğim silinir, terminal içeriğinin kalmasını tercih ederim.
Wayne Walker

1

Busybox'ınız varsa, bu çıkışı da görebilirsiniz . Alpine Linux , onu kullanan popüler bir dağıtımın güzel bir örneğidir. Bkz https://wiki.alpinelinux.org/wiki/Alpine_Linux:FAQ#How_to_enable.2Ffix_colors_for_git.3F

Şu anda Busybox kullanıp kullanmadığınızı bilmenin basit bir yolu:

realpath `which less`

Veya balık kabuğu kullanıyorsanız

realpath (which less)

Çıktı ise /bin/busybox, daha az gnu yükleyerek sorununuzu çözebilirsiniz .

Alpine'de:

sudo apk --update add less

Komut, dağıtım / paket yöneticisine bağlı olarak farklı olacaktır.

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.