awkYalnızca +ve -çizgilerini göstermek için nasıl kullanılır , herhangi bir renk veya metin biçimlendirmesinin git diffhesaba katılması çıktı olabilir:
Buradaki diğer cevaplardan hiçbiri ( diğer cevabım dahil ) tam olarak istediğiniz şeyi% 100 doğru şekilde yapmayacaktır. Ancak bu cevap olacaktır. İşte kopyalayıp terminalinize yapıştırabileceğiniz 1 astar. Okunabilirlik için birkaç satır yaptım - her iki şekilde de kopyalayıp yapıştırabilirsiniz, böylece okunabilir hale getirebilirim! awkProgramlama diline dayanır :
git diff --color=always "$@" | awk '
# 1. Match and then skip "--- a/" and "+++ b/" lines
/^(\033\[(([0-9]{1,2};?){1,10})m)?(--- a\/|\+\+\+ b\/)/ {
next
}
# 2. Now print the remaining "+" and "-" lines ONLY! Note: doing step 1 above first was required or
# else those lines would have been matched by this matcher below too since they also begin with
# the "+" and "-" symbols.
/^(\033\[(([0-9]{1,2};?){1,10})m)?[-+]/ {
print $0
}
' | less -RFX
İşte özellikleri. Tüm bu özellikler, birlikte ele alındığında, burada diğer her yanıtın eksikliklerini çözer:
- Renkli VE renksiz çıktıları işler. Bu normal ifadenin yaptığı şey budur:
^(\033\[(([0-9]{1,2};?){1,10})m)?
- Ayarlarınızda belirleyebileceğiniz
git config kalın, italik, üstü çizili vb. Dahil olmak üzere TÜM RENKLERİ ve TÜM METİN BİÇİMLENDİRME SEÇENEKLERİNİ işler . Bu yüzden yukarıdaki regex'in içinde ;?ve {1,10}içinde: bir renk veya metin biçimlendirme kodunun başlangıcını algılarsa, bu birleştirilmiş ANSI kodlarının en fazla 10 dizisiyle eşleşir.
Kabul edilen yanıtın yaptığı gibi, ile başlayan satırları @@ve kelimeyi de İÇERMEZ . Bu satırları istiyorsanız (ki açıkçası, yararlı olduğunu düşünüyorum :)), bunun yerine şunu yapın:diff
git diff --unified=0
veya
git diff -U0
Çıktıyı olduğu gibi tam olarak aynı şekilde gösterir git diff: lessisteğe bağlı renkli çıktıya sahip çağrı cihazında ( -R) ve yalnızca metin> 1 sayfa ( -F) ise ve quit ( -X) yaptığınızda ekrandaki metnin geçerli sayfasını korurken .
Ayrıca awk programlama dilini kullandığından güçlü ve kolay yapılandırılabilir olma avantajına da sahiptir .
Awk öğrenmekle ilgileniyorsanız , işte bazı kaynaklar:
gawk(GNU awk) kılavuzu: https://www.gnu.org/software/gawk/manual/html_node/index.html#SEC_Contents
- Çalışma
git diffnve oradaki yorumlar: https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scripts/git-diffn.sh
- Satır numaraları ile
git diffnde istiyorsanız , git diffburaya bakın: Satır numaraları ile Git fark (Satır numaraları ile Git günlüğü)
- Bazı awk "merhaba dünya" ve sözdizimi testi örnekleri: https://github.com/ElectricRCAircraftGuy/eRCaGuy_hello_world/tree/master/awk
Bir bonus olarak, yukarıdakileri git diffc"YALNIZCA 'değişimleri göstermek için git diff" anlamına gelen şekilde kullanmak üzere tamamladım . Kullanım olan özdeş için git diff; sadece git diffcbunun yerine kullanın! TÜM seçenekleri destekler. Renk varsayılan olarak AÇIK'tır. Kapatmak için git diffc --no-colorveya kullanın git diffc --color=never. Ayrıntılar man git diffiçin bakın.
Dün gece (satır sayıları ile git diffngösterilen bir araç) bitirdiğimden beri git diffyazmak git diffcönemsizdi. Bilgi kafamda tazeyken şimdi yapsam iyi olur diye düşündüm.
Kurulum git diffc:
Takip buradaki cevabın sonunda talimatları Gördüğünüz her yerde hariç, git-diffntalimatlar kullanmak git-diffcyerine. Buna wgetkomuta da dahildir. İndirmek ve kurmak git diffckolaydır: sadece birkaç komuttur.