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.