Ini git log --decorate
akan dimasukkan secara default:
- HEAD dalam warna cyan
- cabang terpencil dengan warna merah
- tag berwarna hijau
dan dapat diubah melalui color.decorate
config.
Tetapi git log --format
tidak menawarkan cara untuk menampilkan secara khusus HEAD
atau remote atau cabang: ketiganya ditampilkan melalui %d
, dengan satu warna mungkin.
Perbarui Mei 2013, seperti yang disebutkan di bawah ini oleh Elad Shahar (suara positif), git 1.8.3 menawarkan satu opsi lagi:
git log –format
sekarang menggunakan %C(auto)
token yang memberitahu Git untuk menggunakan warna saat menyelesaikan %d
(dekorasi), %h
(nama objek komit pendek), dll. untuk keluaran terminal.
Posting blog Atlassian ini berkomentar bahwa fitur ini adalah bagian dari beberapa fitur lainnya yang berfokus pada format ( git rebase
, git count-objects
) dan warna ( git branch -vv
)
Ini datang sebagai tambahan dari auto,reset
1.8.2 sebelumnya , yang secara otomatis menonaktifkan warna ketika output tidak digunakan untuk terminal1
%C(auto,blue)Hello%C(auto,reset)
Catatan: git 2.4+ (Q2 2015) akan melakukan pekerjaan yang lebih baik untuk mengatur ulang warna di sekitar nama cabang.
Lihat commit 5ee8758 oleh Junio C Hamano ( gitster
) :
log --decorate
: jangan membocorkan warna "commit" ke item berikutnya
Dalam " git log --decorate
", Anda akan melihat header komit seperti ini:
commit ... (HEAD, jc/decorate-leaky-separator-color)
di mana " commit ... (
" dilukis color.diff.commit
, " HEAD
" di color.decorate.head
, " ,
" di color.diff.commit
, nama cabang di
color.decorate.branch
dan kemudian menutup " )
" di color.diff.commit
.
Jika Anda ingin mengecat HEAD dan nama cabang lokal dengan warna yang sama dengan teks tubuh (mungkin karena cyan dan hijau terlalu redup pada terminal hitam-putih untuk dapat dibaca), Anda tidak ingin mengatakannya
[color "decorate"]
head = black
branch = black
karena Anda tidak akan dapat menggunakan kembali konfigurasi yang sama pada terminal putih-hitam. Anda akan berharap secara naif
[color "decorate"]
head = normal
branch = normal
untuk bekerja, tapi sayangnya tidak.
Ini melukis string " HEAD
" dan nama cabang dengan warna yang sama seperti tanda kurung buka atau koma di antara elemen dekorasi.
Ini karena kode lupa menyetel ulang warna setelah mencetak "awalan" dengan warnanya sendiri.
Perhatikan bahwa git 2.5 (Q2 2015) memperbaiki bug:
Lihat commit 429ad20 oleh Junio C Hamano ( gitster
) , 13 Mei 2015.
(Digabung oleh Junio C Hamano - gitster
- dalam commit fd70780 , 22 Mei 2015)
log
: jangan mempersingkat nama dekorasi terlalu dini
Peningkatan " log --decorate
" di Git 2.4 yang menunjukkan komit di ujung cabang saat ini misalnya " HEAD -> master
", tidak bekerja dengan --decorate = full.
Git 2.9.x + (Q3 2016) akan memperbaiki bug dan kehormatan color=auto
untuk%C(auto)
Git 2.10.2 (Okt. 2016) memperbaiki bug lain dengan commit 82b83da (29 Sep 2016), dan commit c99ad27 (17 Sep 2016) oleh René Scharfe (``) .
(Digabung oleh Junio C Hamano - gitster
- di commit 76796d4 , 28 Okt 2016)
pretty
: hindari menambahkan reset %C(auto)
jika output kosong
Kami mengeluarkan urutan escape untuk menyetel ulang warna dan atribut untuk %C(auto)
memastikan pewarnaan otomatis ditampilkan sebagaimana dimaksud.
Berhenti melakukan itu jika output strbuf kosong , yaitu ketika %C(auto)
muncul di awal format string, karena tidak perlu reset dan kami menyimpan beberapa byte pada output.
pretty
: biarkan %C(auto)
setel ulang semua atribut
Ulang warna dan atribut pada %C(auto)
untuk mengaktifkan kontrol otomatis penuh atas mereka; jika tidak, atribut seperti tebal atau terbalik masih bisa berlaku dari %C
placeholder sebelumnya .
--decorate
tampaknya memiliki implementasi dan konfigurasinya sendiri, sementara--pretty
menawarkan informasi yang sama melalui%d
sebagai satu blok, yang berarti Anda tidak dapat memiliki tingkat konfigurasi warna yang sama dengan yang--pretty
Anda miliki--decorate
.git config --show-origin -l
: Anda akan melihat semua konfigurasi Anda. Anda kemudian dapat grep untuk "warna".Buat mereka menjadi kurung:
Jadi
%C(yellow reverse)
akan berhasil.sumber
%d
apakah semua cabang jadi akan terlihat seperti(HEAD, master)
, dalam hal ini head harus biru dan master harus hijau (saya yakin itu adalah warna default). di mana%C(yellow)%d%Creset
akan membuatnya menjadi warna yang sama.git log --decorate --oneline --date=...
Opsi konfigurasi
log.decorate
dapat mengaktifkan / menonaktifkan dekorasi default di log.Setelah selesai, Anda dapat menggunakannya
color.decorate.*
untuk bermain-main dengan warnasumber
log.decorate=full
menyebabkan nama ref dicetak dengan awalannya (refs/heads/
, dll.); Saya merasalog.decorate=short
lebih berguna.short
suka daripadafull
Beberapa mungkin ingin menggunakan ini:
%C(colorname)
Ini tidak perlu mengubah konfigurasi warna.Contoh: Mewarnai nama penulis dengan warna kuning
Warna ANSI biasa harus berfungsi https://en.wikipedia.org/wiki/ANSI_escape_code
sumber