Git istemini Bash isteminde renklerle nasıl gösteririm?


109

Git rehberinde çalışırken gnome terminalinde (Ubuntu 15.10) şube ismini göstermek için bu kılavuzu kullanıyorum . Yukarıdakilere dayanarak şimdi ~ / .bashrc dosyamda aşağıdakiler var:

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes 

...

# Add git branch if its present to PS1
parse_git_branch() {
 git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
if [ "$color_prompt" = yes ]; then
 PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\]$(parse_git_branch)\[\033[00m\]\$ '
else
 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi
unset color_prompt force_color_prompt

Sonuç olarak şimdi alıyorum:

görüntü tanımını buraya girin

bu yüzden işe yarıyor . Ancak neden benim kullanıcı @ ev sahibinin rengi kaldırıldı? Ayrıca dal adının renkli olması gerektiğini de bekliyorum. Böyle görünmeden önce:

görüntü tanımını buraya girin

GÜNCELLEME: Artık bu kılavuzu denedim:

https://coderwall.com/p/fasnya/add-git-branch-name-to-bash-prompt

bunu .bashrc'ye ekleyerek:

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "

ve bu işe yarıyor:

görüntü tanımını buraya girin

Dikkat. .Bashrc Bende de var (varsayılan):

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

Bu snippet'in neden doğru sonuç verdiğini ve diğer sürümün verememe nedenini henüz bulamadım. Bu konuda herhangi bir giriş var mı?

İşte çalışmayan eski pasajı etkinleştiren benim .bashrc sürümü:

http://pastebin.com/M8kjEiH3


Daha force_color_promptönce uncommented oldu mu?
muru

Evet hem yorumsuz hem de aynı sonucu yorumladım. Yukarıda yayınlanan rehber, yorumlanması gerektiğini söylüyor.
u123

Tamamını gönderebilir misin .bashrc? IIRC varsayılan .bashrcrenk istemlerini etkinleştirmez, bu yüzden renkleri göstermesi için değiştirmeniz gerekir. Neyi değiştirdiğine bağlı.
muru

1
64 no'lu satıra bir göz atın, bu da uncommenting'in neden force_color_promptyardımcı olmadığını söyleyecektir .
muru

2
@ u123 varsayılan için .bashrcfazla endişelenmeyin . Eğer karışırsan, orjinalini her zaman alabilirsin /etc/skel/.bashrc.
muru

Yanıtlar:


122

Bu pasajı:

# Add git branch if its present to PS1

parse_git_branch() {
 git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
if [ "$color_prompt" = yes ]; then
 PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\]$(parse_git_branch)\[\033[00m\]\$ '
else
 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi

Varsayılan bilgi istemi tanımını değiştirmek içindir :

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

Şununla biter:

unset color_prompt force_color_prompt

.bashrcYayınladığınız bunu ekliyoruz gösterir sonra varsayılan istemi tanımı ve unset color_prompt force_color_prompt(hat # 64).

Ya değiştirmek snippet'iyle varsayılan istemi tanımını ulaşabilir veya terk ~/.bashrcolduğu gibi ve birlikte varsayılan istemi tanımını açıklama unset color_prompt force_color_promptsatırı # 64:


Bu yüzden .bashrc'nızın bir parçası

parse_git_branch() {
 git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
if [ "$color_prompt" = yes ]; then
 PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\] $(parse_git_branch)\[\033[00m\]\$ '
else
 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi
# THE SIX LINES BELOW are the default prompt and the unset (which were in the original .bashrc)
#if [ "$color_prompt" = yes ]; then
#    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
#else
#    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
#fi
#unset color_prompt force_color_prompt

screensot


Yukarıdaki doğrulandı ve haklısın. Bashrc dosyasının varsayılan bölümlerini değiştirmek zorunda kalmadan çalıştığı için yeni snippet sürümüne bağlı kalacağım.
u123

1
Şube adına renk ekleyemez.
Avinash Raj

Varsayılan bir kopyası ile test edin @AvinashRaj ~/.bashrciçinde /etc/skel/.bashrcaşağıdaki konularda müdahale şey olabilir ~/.bashrc.
kos

un-comment force_color_prompt = Evet, renkler görünmüyorsa (satır # 48).
Adil Abbasi,

1
Şubenizi durumuna göre renklendirmek için git'in sunduğu yerel git-hızlı komut dosyasını kullanabilirsiniz .
Niket Pathak

60

Ubuntu: Şubenizin adını terminalinizde gösterin

Bu satırları ~ / .bashrc dosyasına ekleyin

# Show git branch name
force_color_prompt=yes
color_prompt=yes
parse_git_branch() {
 git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
if [ "$color_prompt" = yes ]; then
 PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\]$(parse_git_branch)\[\033[00m\]\$ '
else
 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi
unset color_prompt force_color_prompt

.Bashrc dosyasını şu komutla yeniden yükleyin:

$ source ~/.bashrc

5
Bu benim için 18.04 tarihinde çalıştı!
cbloss793

1
Teşekkürler. Kullanımı: Ubuntu 18.04.1 LTS
Bishwas Mishra

Ayrıca benim için ilköğretim 0.4 Loki'de de çalıştı. ~ / .Bashrc komutunu açmam kadar basit sudo nano ~/.bashrc, kodunuzu dosyanın sonuna kopyalayın, kaydedin, çıkın ve ~ / .bashrc dosyasını yukarıda yapıştırdığınız kodla yeniden yükleyin. Çok teşekkürler;)
Juan Gómez Carrillo

Redhat 6.8'de çalışıyor!
BeeGee

1
Bu çalıştı ve renkleri tuttu! (Ubuntu 18.04)
warkentien2

10

Şimdilik, bu https://gist.github.com/eliotsykes/47516b877f5a4f7cd52f'yi takip ettim ve çalışıyorum, şimdiye kadar sevdim, daha da özelleştirmeyi düşünüyorum.

Terminalde

mkdir ~/.bash

Ham git-prompt.shdosyayı git katkı ~/.bash dizinine kopyalayın : https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh

İçeride ~/.bashrcveya ~/.bash_profile(normalde bash özelleştirmelerini / kurulumlarını koyduğunuz dosyayı seçin), satırları ekleyin:

source ~/.bash/git-prompt.sh # Show git branch name at command prompt
export GIT_PS1_SHOWCOLORHINTS=true # Option for git-prompt.sh to show branch name in color

# Terminal Prompt:
# Include git branch, use PROMPT_COMMAND (not PS1) to get color output (see git-prompt.sh for more)
export PROMPT_COMMAND='__git_ps1 "\w" "\n\\\$ "' # Git branch (relies on git-prompt.sh)

Git deposunda olduğunuz sürece, Bash komut isteminiz, değişiklik yapılmadan önce geçerli olan şubeyi renkli olarak göstermelidir.


kolay ve çalışıyor!
Dani

Bu açık, özlü ve net olduğu için kabul edilen cevap olmalıdır ve işi diğer platformlarda da çalışır.
miguelmorin

2

Ana klasöre git

Gizli dosyaları göstermek için Ctrl+ işaretini tıklayın h.

Aç. bashrcdosya ve sonunda bir sonraki yapıştırın:

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "

Terminalinizi açtıysanız, kapatıp tekrar açın. Keyfini çıkarın!!


Merhaba, denedim ve yalnızca süper kullanıcımı değiştirdiğim yerde çalışıyor, her zaman nasıl etkinleştireceğimi söyleyebilir misiniz?
Denis Stephanov

0

Benim sorunum seçeneği etkinleştirmediğimdendi.

Bir giriş kabuğu olarak çalıştır komutu içinde

TerminalDüzenleProfil TercihleriKomut


0

değiştirmek

parse_git_branch

ile

parse_git_branch 2>/dev/null

PS1 tanımınızda ve sonsuza dek mutlu yaşayın.


0

Aşağıdaki satırları aşağıdakilere ekleyin ~/.bashrc:

export GIT_PS1_SHOWDIRTYSTATE=true
export GIT_PS1_SHOWUNTRACKEDFILES=true

export PS1='\[\033[32m\]\u@\h\[\033[00m\]:\[\033[34m\]\w\[\033[31m\]$(__git_ps1)\[\033[00m\]\$ '
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.