Bagaimana mengkonfigurasi istilah Mac OS X sehingga git memiliki warna? [Tutup]

200

Saya telah melihat demo git Mac OS X online yang dikonfigurasi untuk memiliki banyak warna.

Misalnya, prompt-nya kuning, lsdirektori- nya ungu dan git diffoutput- nya ~ 4 warna (pink, hijau muda, merah, kuning pucat).

Bisakah Anda memberi tahu saya bagaimana cara mengkonfigurasi terminal Mac OS X untuk mencapai itu? Ini jelas Mac OS X Terminal.app, bukan iTerm.

yinglcs
sumber
3
Kecuali bahwa superuser.com masih dalam versi beta pribadi dan yinglcs mungkin tidak memiliki akses.
Fredrik
Apakah ada beberapa persyaratan pendaftaran Pengguna Super selain yang disebutkan di blog.stackoverflow.com/2009/07/… ?
las3rjock
3
Mungkin tidak, tetapi berapa banyak pengguna yang tahu tentang itu? Ini tidak seperti ada tautan ke pos di superuser.com yang ditemukan oleh pengguna yang dimigrasi pertanyaannya ketika dia sampai di sana (jika ya, saya tidak dapat menemukannya).
Fredrik
3
Namun pertanyaan bermanfaat lainnya telah ditutup. Untungnya tidak sebelum beberapa orang bisa menjawab.
Ben Thurley
1
Sudah mapan sekarang bahwa pertanyaan Git adalah pada topik; @ Penutupan casperOne di sini salah, dan saya memilih untuk membuka kembali.
Mark Amery

Jawaban:

391

Jawaban William Purcell hanya memungkinkan warna untuk perintah 'git diff'. Lakukan ini untuk mengaktifkan warna untuk semua perintah git:

$ git config --global color.ui true
phloopy
sumber
Apa yang saya butuhkan. Terima kasih.
jffgrdnr
1
Kesempurnaan murni. Terima kasih Pak.
Brandon Buck
1
atau Anda dapat memeriksa pilihan alternatif yang lebih kaya ini di sini: gist.github.com/trey/2722934
Yannis Dran
@yinglcs, sudah terima jawaban ini, ya ?!
Eliran Malka
ini tidak berfungsi
KansaiRobot
57

Untuk menampilkan warna pada output git diff, Anda perlu mengkonfigurasi git. Coba jalankan

$ git config --global color.diff true

untuk mengatur $ HOME / .gitconfig Anda dengan tepat.

William Pursell
sumber
William, Ya! Ini yang saya lewatkan.
avernet
terima kasih, ini berfungsi sempurna!
antiqe
13

Biasanya bukan sesuatu yang Anda konfigurasikan untuk dilakukan terminal ... Terminal tidak mengetahui apa yang ditampilkan tetapi coba ini di shell Anda (jika Anda menggunakan bash, di beberapa shell lain Anda tidak mengekspor tetapi panggil setenv atau sesuatu yang lain):

export CLICOLOR=1
export TERM=xterm-color

Anda kemudian dapat menggunakan generator LSCOLORS untuk menyiapkan sesuatu yang dapat Anda ekspor menggunakan sesuatu seperti:

export LSCOLORS=fxfxcxdxbxegedabagacad

(di atas akan memberi Anda direktori ungu)

Setelah selesai dan puas dengan hasilnya, tambahkan tiga baris ke file / etc / bashrc Anda atau .bashrc di direktori home pengguna Anda.

Sunting: Juga, di terminal Anda, pastikan kotak centang "Tampilkan warna ANSI" (pada halaman "Teks") dicentang.

Fredrik
sumber
.bashrc juga berfungsi? Di mac saya .bash_profile, saya tahu itu .bashrc di Linux tapi saya pikir itu berbeda pada mac dengan seluruh BSD (Juga LSCOLORS berbeda di Linux dan BSD / Mac, sepertinya).
Jorge Israel Peña
.bashrc bekerja untuk saya ... Dan ya, itu berbeda. gls menggunakan LS_COLORS (yang juga dapat dibuat menggunakan halaman yang ditautkan)
Fredrik
Terima kasih. Tetapi bagaimana kita bisa mengkonfigurasi ke warna seperti 'gandum', 'ungu' di prompt atau ls output? atau 'pink' di output 'git diff'. Terima kasih.
yinglcs
Warna yang mungkin adalah yang dapat Anda temukan di situs yang saya tautkan, itu adalah bagian dari standar dan ketika mereka mendefinisikannya Anda senang jika Anda memiliki terminal yang mampu menampilkan 16 warna.
Fredrik
13

Inilah yang saya gunakan dalam file profil saya. Bekerja seperti pesona karena memungkinkan saya untuk melihat cabang git saat ini dan juga keadaan melalui warna. Jika Anda ingin memodifikasinya, harap perhatikan bahwa penting untuk menghindari kode warna untuk menghindari masalah umpan baris dalam antrean panjang.

# Setting GIT prompt
c_cyan=`tput setaf 6`
c_red=`tput setaf 1`
c_green=`tput setaf 2`
c_sgr0=`tput sgr0`

branch_color ()
{
    if git rev-parse --git-dir >/dev/null 2>&1
    then
        color=""
        if git diff --quiet 2>/dev/null >&2 
        then
            color=${c_green}
        else
            color=${c_red}
        fi
    else
        return 0
    fi
    echo -n $color
}

parse_git_branch ()
{
    if git rev-parse --git-dir >/dev/null 2>&1
    then
        gitver="["$(git branch 2>/dev/null| sed -n '/^\*/s/^\* //p')"]"
    else
        return 0
    fi
echo -e $gitver
}

#It's important to escape colors with \[ to indicate the length is 0
PS1='\u@\[${c_red}\]\W\[${c_sgr0}\]\[\[$(branch_color)\]$(parse_git_branch)\[${c_sgr0}\]$ '
Marc M.
sumber
File profil mana yang Anda sebutkan?
Darshan Puranik
@ DarhanPurani, saya bermaksud mengatakan .profilefile dalam $ bash saya
Marc M
2

Buka aplikasi terminal, lalu buka dialog preferensi baik melalui menu (Terminal -> Preferences) atau dengan menekan Command+ ,. Setelah dialog preferensi terbuka, pilih gaya terminal dari panel di sebelah kiri, pilih Teks dari bilah tombol, daripada pastikan kotak centang "Tampilkan warna ANSI" dicentang.

Itu akan memungkinkan warna pada terminal. Untuk mendapatkan warna dalam output pada terminal, Anda harus menanamkan perintah warna ANSI dalam data yang dikirim ke terminal. Cara ini dilakukan tergantung pada perintah. Sebagai contoh (seperti yang ditunjukkan di atas) lsperintah memiliki opsi warna. Untuk kode warna, lakukan pencarian google untuk "ansi color".

berkode
sumber
Perhatikan bahwa pertanyaan sudah ditutup sebagai topik yang tidak dibahas. :)
Ryan Kohn
0

Untuk keluaran ls berwarna, saya akan merekomendasikan menginstal gnu coreutils dan menggunakan versi ls sebagai gantinya. Untuk salah satu versi ls Anda harus memberikan flag yang benar, yaitu --color untuk versi gnu atau -G untuk versi OS X standar. Jadi Anda bisa melakukan sesuatu seperti

alias ls='ls --color'

di .bashrc Anda.

Untuk memberi warna pada permintaan Anda, Anda harus menggunakan kode warna yang benar untuk terminal Anda, tetapi saya menggunakan

PROMPT="$(print '%{\e[0;38m%}%{\e[1;1m%]%}[%m:%c] %n%%%{\e[0m%}') "

untuk menghasilkan

[hostname:directory] username%

dalam warna putih tebal.

Amuk
sumber