Keluaran Git diff untuk menyimpan pewarnaan file

123

Apakah mungkin untuk melakukan git diffdan menyimpan output ke file dengan pewarnaan entah bagaimana?

Saya tahu bagaimana melakukannya git diff > filename.rtf- yang menyimpan ke file, tetapi saya ingin mempertahankan pewarnaan.

RoR
sumber
2
Anda dapat mengonversi ke html dengan warna: stackoverflow.com/questions/2013091/coloured-diff-to-html
Gabe Moothart
5
Notepad ++ akan menyorot file tersebut jika Anda menyimpannya dengan ekstensi .diff.
Monsinyur

Jawaban:

147

Mencoba:

git diff --color > foo.txt

Lalu masalah selanjutnya:

cat foo.txt

Atau:

less -R foo.txt
ralphtheninja
sumber
2
@RoR, "omong kosong" satu orang adalah kode warna orang lain (yah, terminal). ;-) Saya mencobanya dan berhasil; pewarnaan dipertahankan jika saya catfile dari baris perintah. (Bagaimana lagi Anda mengharapkan warna-warna itu dipertahankan?)
mpontillo
1
Nah itulah yang dilakukannya. Menambahkan kode pewarnaan bash. Jika Anda cat file di konsol itu menunjukkan warna.
ralphtheninja
1
@RoR Anda harus meletakkan sesuatu di tengah sana untuk mengubah kode warna bash ke format rtf.
ralphtheninja
3
Notepad ++ dapat menyorot file diff. (Ekstensi * .diff secara otomatis disorot, jika tidak, ubah Language --> D --> Diff.) Jika Anda tidak menyukai warna default, ubahlah Settings --> Style Configurator --> Diff. Untuk menyalin dan menempel dengan warna, Anda dapat menggunakan plugin (misalnya NppExport) yang memungkinkan mengekspor / menyalin ke RTF atau HTML.
Nikita G.
3
git diff AB> foo.diff (Banyak editor akan membuka file dengan warna karena file tersebut adalah file .diff)
zeusstl
34

Simpan file dengan ekstensi .diff dan buka di Notepad ++ atau Vim atau SublimeText.

git diff > 20150203_someChanges.diff

Terima kasih @Monsingor

ironhyde
sumber
Saya pikir Anda lupa '>' di tengah, ini tidak berhasil
GoGoris
20

Buka file diff output di Sublime Text 2 . Ini menunjukkan warna berbeda.

Julien
sumber
1
Anda mungkin perlu mengubah sintaks menjadi diff untuk mengaktifkan penyorotan yang tepat jika file diff memiliki ekstensi yang berbeda dari * .diff. (melalui Tampilan -> Sintaks -> Diff).
Nikita G.
Itu tidak menyorot diff.txtuntuk saya, bahkan dengan "Diff" yang terdeteksi secara otomatis di sudut kanan bawah.
Nakilon
11

Untuk memperluas jawaban @ Gabe.

Anda dapat menyalurkan output ke skrip bash konverter ansi ke html dan mengarahkan output itu ke file html:

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

tentu saja html dapat dilihat oleh browser apa pun sehingga output dapat dibaca di Windows dll.

kode ansi2html ada di sini: http://www.pixelbeat.org/scripts/ansi2html.sh

sk8asd123
sumber
tidak bekerja Saya mendapatkan: gawk: cmd. baris: 25: (FILENAME = - FNR = 1) fatal: upaya untuk menggunakan array `a (from span) 'dalam konteks skalar
Tim
2
Dapatkan Homebrew dan jalankan brew install gawk. Anda juga membutuhkan brew install gnu-sed.
Booth Geoffrey
persis apa yang saya inginkan, luar biasa!
Keith
Pustaka python ansi2html melakukannya untuk saya github.com/ralphbean/ansi2html . pip dapat diinstal dan berfungsi persis seperti skrip bash dalam jawaban ini. Jangan lupa untuk mengganti "./ansi2html.sh" dengan "ansi2html".
Nagasaki45
8

Vim mewarnai file yang berisi git diff dengan indah.

git diff

Rose Perrone
sumber
3

Saya menemukan jawabannya di sini: Warna keluaran dari perintah git tertentu .

Anda dapat meneruskan -c color.ui=alwayske gitperintah apa pun dan itu akan terus mewarnai saat pengalihan. Sebagai contoh:git -c color.ui=always status > file

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

Perbedaan yang diekstrak dalam file '* .txt' mudah dibaca oleh SublimeText2 tanpa perlu disetel (melalui View -> Syntax -> Diff).

Abhijeet
sumber
git remote rm remotes/b/masteruntuk mengatur ulang cabang kembali ke keadaan semula.
Abhijeet
1

untuk mengizinkan teks terminal berwarna ... git diff atau lainnya ... agar dapat dilihat dari browser

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

instal ahamenggunakan di atas lalu terbitkan

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

firefox  ~/cool_colorized.html
Scott Stensland
sumber
0

Anda dapat mengunggah ke GitHub dan memberikan tautan ke komit yang relevan.

Choylton B. Higginbottom
sumber