Renklendirmeyi korumak için git diff çıktısı


123

Bunu yapmak mümkün mü git diffÇıktıyı bir şekilde renklendirerek bir dosyaya kaydetmek ve kaydetmek ?

Nasıl yapılacağını biliyorum git diff > filename.rtf- bu bir dosyaya kaydediyor, ancak rengi korumak istiyorum.



5
Notepad ++, dosyayı .diff uzantısıyla kaydederseniz vurgular.
Monsignor

Yanıtlar:


147

Deneyin:

git diff --color > foo.txt

Daha sonra yayınlayın:

cat foo.txt

Veya:

less -R foo.txt

2
@RoR, bir kişinin "anlamsız kelimesi" başka bir kişinin (yani terminalin) renk kodlarıdır. ;-) Denedim ve işe yarıyor; catKomut satırından dosya alırsam renklendirme korunur . (Renklerin korunmasını başka nasıl beklersiniz?)
mpontillo

1
İşte yaptığı bu. Bash renklendirme kodları ekler. Dosyayı konsolda seçerseniz renkleri gösterir.
ralphtheninja

1
@RoR Bash renk kodlarını rtf formatına dönüştürmek için ortasına bir şey koymanız gerekir.
ralphtheninja

3
Notepad ++, fark dosyalarını vurgulayabilir. (* .diff uzantıları otomatik olarak vurgulanır, aksi takdirde değiştirin Language --> D --> Diff.) Varsayılan renkleri sevmiyorsanız, değiştirin Settings --> Style Configurator --> Diff. Renklerle yapıştırmayı NppExportkopyalamak için, RTF veya HTML'ye aktarmaya / kopyalamaya izin veren bir eklenti (örn. ) Kullanabilirsiniz .
Nikita G.

3
git diff AB> foo.diff (Dosya bir .diff dosyası olduğu için birçok editör dosyayı renklerle
açacaktır

34

Dosyayı .diff uzantısıyla kaydedin ve Notepad ++ veya Vim veya SublimeText'te açın.

git diff > 20150203_someChanges.diff

Teşekkürler @Monsingor


Ortada '>' unuttuğunuzu düşünüyorum, bu işe yaramıyor
GoGoris

20

Çıktı diff dosyasını Sublime Text 2'de açın . Dif renklerini gösterir.


1
Dif dosyasının uzantısı * .diff'ten farklı olması durumunda düzgün vurgulamayı etkinleştirmek için sözdizimini diff olarak değiştirmeniz gerekebilir. (Görünüm -> Sözdizimi -> Diff aracılığıyla).
Nikita G.

diff.txtSağ alt köşede otomatik olarak algılanan "Diff" olsa bile benim için vurgulanmıyor .
Nakilon

11

@ Gabe'in cevabını genişletmek için.

Çıktıyı ansi'den html'ye dönüştürücü bash betiğine aktarabilir ve bu çıktıyı bir html dosyasına yönlendirebilirsiniz:

git diff --color|./ansi2html.sh > changes.html

Tabii ki html herhangi bir tarayıcı tarafından görüntülenebilir, böylece çıktı Windows vb.

ansi2html kodu burada: http://www.pixelbeat.org/scripts/ansi2html.sh


çalışmıyor Anlıyorum: gawk: cmd. satır: 25: (FILENAME = - FNR = 1) ölümcül: “a (açıklıktan) 'dizisini skaler bağlamda kullanma girişimi
Tim

2
Homebrew'i alın ve koşun brew install gawk. Ayrıca ihtiyacınız olacak brew install gnu-sed.
Geoffrey Booth

tam olarak istediğim şey, harika!
Keith

Ansi2html python kitaplığı bunu benim için yaptı github.com/ralphbean/ansi2html . pip kurulabilir ve bu cevapta tam olarak bash betiği gibi çalışır. "./Ansi2html.sh" yi "ansi2html" ile değiştirmeyi unutmayın.
Nagasaki45



2
git remote add -f b path/to/repo_b.git
git remote update
git diff master remotes/b/master > foo.txt

'* .Txt' dosyalarında çıkarılan farklar, ayarlamaya gerek kalmadan SublimeText2 tarafından kolayca okunur (Görünüm -> Sözdizimi -> Diff aracılığıyla).


git remote rm remotes/b/masterşubeyi orijinal durumuna sıfırlamak için.
Abhijeet

1

herhangi bir renklendirilmiş terminal metninin ... git diff veya başka herhangi birinin ... bir tarayıcıdan görüntülenebilmesini sağlamak için

sudo apt-get install aha  #  https://github.com/theZiz/aha

ahaYukarıdakileri kullanarak yükleyin ve ardından sorun

git diff --color mysourcefile  | aha > ~/cool_colorized.html

firefox  ~/cool_colorized.html

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.