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

Terminal → Düzenle → Profil Tercihleri → Komut


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.