Git diff standart çıktıya nasıl yazılır?


93

Varsayılan olarak git difftüm +-satırları standart çıktıya yazdırır , ancak (devian) bir makinem var (ssh aracılığıyla bağlarım) git diffbeni bir düzenleyiciye götürür (hangisi olduğunu bilmiyorum) ve qdevam etmek için basmam gerekiyor .

Checker git yapılandırmam var ve şöyle görünüyor:

$ git config --list
user.name=XXX
user.email=XXX@XXX
color.ui=false
difftool.prompt=false
mergetool.prompt=false
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=XXX
branch.master.remote=origin
branch.master.merge=refs/heads/master
$ git config --global --list
user.name=XXX
user.email=XXX@XXX
color.ui=false
difftool.prompt=false
mergetool.prompt=false
$ git config --system --list
'/etc/gitconfig': No such file or directory

Kaçırdığım bir yer var mı? Belki bilinmeyen araç bir yedek veya başka bir şeydir çünkü makinemde bir şey eksik? Herhangi bir yardım takdir edilmektedir. Teşekkürler.


Yanıtlar:


167

Varsayılan olarak Git, diff çıktısını (ve genellikle bir ekran dolusu olandan daha fazla olabilecek herhangi bir çıktıyı) , bir seferde yalnızca bir ekran dolusu çıktı yazdıran bir yardımcı program olan sistemin çağrı cihazına gönderir . Bir komutu çalıştırdığınızda çağrı cihazını devre dışı bırakmak istiyorsanız, --no-pagerGit'e geçin:

$ git --no-pager <subcommand> <options>

Bu, herhangi bir Git komutu için çalıştırılabilir.

Yalnızca diff için varsayılan olarak devre dışı bırakmak istiyorsanız , fark sayfalayıcısını şu şekilde ayarlayabilirsiniz cat:

$ git config pager.diff false

Tüm komutlar için varsayılan olarak devre dışı bırakmak istiyorsanız , Git sayfalayıcısını şu şekilde ayarlayabilirsiniz cat:

$ git config --global core.pager cat

Çağrı cihazını bilmiyordum. git config --global core.pager catbaşardı !. Teşekkür ederim :)
nacho4d

4
@aaronbauman: Eğer geçmek mi git( değil alt komutuyla)?
mipadi

Görüyorum ki, "git --no-pager diff", "git diff --no-pager" den farklı. Açıklama için teşekkürler
aaronbauman

1
Aynı şey için de geçerli git branch, örneğingit config pager.branch false
dinjas

30

Aşağıdaki core.pagerdeğer less, standart çıktıya yazdıran ve ayrıca çağrı cihazı işlevine (gerekirse) sahiptir, yukarı ve aşağı kaydırmayı etkinleştirir (aksine cat):

$ git config --global core.pager "less -FRSX"

Fark ilk ekrana ( -F) sığarsa , ham kontrol karakterlerini ( -R) -Sçıkarırsa, wrapping ( ) yerine uzun satırları keserse ve termcap init / deinit dizeleri ( -X) kullanmazsa hemen çıkar.


1
Teşekkür ederim .. Bu seçeneği internetin her yerinde arıyordum :)
obai

İstediğim bu
user3595632

21

Renkleri umursamıyorsanız cat, herhangi bir gitkomut için de kullanabilirsiniz .

Yani davanız git diff | catiçin.

Düzenleme: yorumlarda belirtildiği gibi renkleri önemsiyorsanız:

git diff --color | cat


9
Ve renkleri önemsiyorsanız, yapın git diff --color | cat(:
xjcl
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.