git 1.9.3 atau lebih baru: gunakan __git_ps1
Git menyediakan skrip shell bernama git-prompt.sh
, yang mencakup fungsi __git_ps1
itu
mencetak teks untuk ditambahkan ke bash PS1 prompt (termasuk nama cabang)
Penggunaannya yang paling dasar adalah:
$ __git_ps1
(master)
Itu juga membutuhkan string format opsional:
$ __git_ps1 'git:[%s]'
git:[master]
Bagaimana cara mendapatkannya
Pertama, salin file ke suatu tempat (misalnya ~/.git-prompt.sh
).
Opsi 1: gunakan salinan yang ada di sistem file Anda. Contoh (Mac OS X 10.15):
$ find / -name 'git-prompt.sh' -type f -print -quit 2>/dev/null
/Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh
Opsi 2: Tarik skrip dari GitHub .
Selanjutnya, tambahkan baris berikut ke Anda .bashrc/.zshrc
:
source ~/.git-prompt.sh
Akhirnya, ubah PS1
panggilan Anda __git_ps1
sebagai pengganti-perintah:
Pesta:
PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
Zsh:
setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
git <1.9.3
Tetapi perhatikan bahwa hanya git 1.9.3 (Mei 2014) atau lebih baru yang memungkinkan Anda menampilkan nama cabang dengan aman (!)
Lihat komit 8976500 oleh Richard Hansen ( richardhansen
) :
Baik bash dan zsh memberikan nilai PS1 ke ekspansi parameter , substitusi perintah , dan ekspansi aritmatika.
Daripada menyertakan nama cabang mentah dan tidak terhapus PS1
ketika menjalankan dalam mode dua atau tiga argumen, buatlah PS1
untuk referensi variabel yang memegang nama cabang.
Karena shell tidak berkembang secara rekursif, ini menghindari eksekusi kode arbitrer dengan nama cabang yang dibuat khusus seperti
'$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)'.
Pikiran licik apa yang akan menamai cabang seperti itu? ;) ( Di sebelah Mom seperti pada xkcd )
Lebih banyak contoh
still_dreaming_1 laporan dalam komentar :
Ini tampaknya bekerja dengan baik jika Anda ingin prompt warna dengan xterm
(di saya .bashrc
):
PS1='\[\e]0;\u@\h: \w\a\]\n${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1)\$ '
Semuanya berwarna berbeda, termasuk rantingnya.
Di dalam Linux Mint 17.3 Cinnamon 64-bit:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w\[\033[00m\]$(__git_ps1) \$ '