मैं बैश प्रॉम्प्ट में रंगों के साथ गिट शाखा कैसे दिखा सकता हूं?


107

मैं इस गाइड का उपयोग gnome टर्मिनल में शाखा का नाम (Ubuntu 15.10) दिखाने के लिए कर रहा हूं जब एक git रिपॉजिटरी में काम कर रहा हूं । उपरोक्त के आधार पर अब मेरे पास मेरी ~ / .bashrc फ़ाइल में नीचे है:

# 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

परिणामस्वरूप मुझे अब मिल रहा है:

यहाँ छवि विवरण दर्ज करें

तो यह काम करता है । लेकिन मेरे उपयोगकर्ता @ होस्ट का रंग क्यों हटा दिया गया है? और मैं यह भी उम्मीद करूंगा कि शाखा का नाम रंगीन होना चाहिए। इससे पहले कि यह इस तरह दिखे:

यहाँ छवि विवरण दर्ज करें

अद्यतन: मैंने अब इसके बजाय इस गाइड की कोशिश की है:

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

इसे .bashrc में जोड़ना:

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\] $ "

और वह काम करता है:

यहाँ छवि विवरण दर्ज करें

सूचना .bashrc में मेरे पास भी यह (डिफ़ॉल्ट) है:

# 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

मुझे अभी तक इस कारण का पता नहीं चल पाया है कि स्निपेट सही परिणाम देता है और दूसरा संस्करण नहीं। इस पर कोई इनपुट?

यहाँ मेरे .bashrc का संस्करण है जिसमें पुराने स्निपेट सक्षम हैं जो काम नहीं करते हैं:

http://pastebin.com/M8kjEiH3


पहले force_color_promptअनकम्फर्टेबल था?
मुरु

हां मैंने दोनों के साथ कोशिश की है और एक ही परिणाम पर टिप्पणी की है। ऊपर पोस्ट किए गए गाइड का कहना है कि इसकी टिप्पणी की जानी चाहिए।
u123

क्या आप अपना पूरा पोस्ट कर सकते हैं .bashrc? IIRC डिफ़ॉल्ट .bashrcरंग संकेतों को सक्षम नहीं करता है, इसलिए आपको इसे रंग दिखाने के लिए बदलना होगा। यह इस बात पर निर्भर करता है कि आपने क्या बदला है।
मुरु

1
लाइन 64 पर एक नज़र डालें, जो आपको बताए कि असहजता force_color_promptने मदद क्यों नहीं की।
मुरु

2
@ u123 डिफ़ॉल्ट के बारे में .bashrcबहुत अधिक चिंता न करें । यदि आप गड़बड़ करते हैं, तो आप हमेशा से मूल प्राप्त कर सकते हैं /etc/skel/.bashrc
मूरू

जवाबों:


120

यह स्निपेट:

# 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

डिफ़ॉल्ट प्रॉम्प्ट परिभाषा को बदलने के लिए है:

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

.bashrcआप पोस्ट से पता चलता आप इसे जोड़ रहे हैं के बाद डिफ़ॉल्ट संकेत परिभाषा और unset color_prompt force_color_prompt(लाइन # 64)।

या तो डिफ़ॉल्ट प्रॉम्प्ट परिभाषा को स्निपेट के साथ बदलें या अपने ~/.bashrcको छोड़ दें जैसा कि यह है और unset color_prompt force_color_promptलाइन # 64 के साथ डिफ़ॉल्ट प्रॉम्प्ट की परिभाषा पर टिप्पणी करें :


तो अपने .bashrc का हिस्सा दिख सकता है

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


ऊपर सत्यापित और आप सही हैं। मैं स्निपेट के नए संस्करण के साथ चिपका रहूँगा क्योंकि यह बिना bashrc फ़ाइल के डिफ़ॉल्ट भागों को संशोधित किए बिना काम करता है।
u123

1
यह शाखा नाम में रंग जोड़ने में विफल रहता है।
अविनाश राज

@AvinashRaj डिफ़ॉल्ट की एक प्रति के साथ यह परीक्षण ~/.bashrcमें /etc/skel/.bashrc, आप कुछ अपने में हस्तक्षेप हो सकता है ~/.bashrc
कोस

यदि रंग दिखाई नहीं दे रहे हैं तो un-comment Force_color_prompt = yes (लाइन # 48)।
आदिल अब्बासी

1
अपनी स्थिति के अनुसार अपनी शाखा को रंग देने के लिए, आप स्वयं द्वारा प्रदान की गई देशी git-prompt स्क्रिप्ट का उपयोग कर सकते हैं ।
निकेत पाठक

60

उबंटू: अपने टर्मिनल पर अपनी शाखा का नाम दिखाएं

इन पंक्तियों को अपनी ~ / .bashrc फ़ाइल में जोड़ें

# 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 फ़ाइल पुनः लोड करें:

$ source ~/.bashrc

5
इसने मेरे लिए 18.04 को काम किया!
cbloss793

1
धन्यवाद। उपयोग: उबंटू 18.04.1 एलटीएस
बिस्वास मिश्रा

इसने मेरे लिए प्राथमिक 0.4 लोकी पर भी काम किया। के रूप में सरल के रूप में मेरे ~ / .bashrc कमांड के साथ खोलें sudo nano ~/.bashrc, फ़ाइल के अंत में अपना कोड कॉपी करें, इसे सहेजें, बाहर निकलें और आपके द्वारा ऊपर दिए गए कोड के साथ ~ / .bashrc को फिर से लोड करें। बहुत बहुत धन्यवाद;)
जुआन गोमेज़ कैरिलो

Redhat 6.8 पर काम करता है!
बीगी

1
यह काम किया और रंग रखा! (Ubuntu 18.04)
warkentien2

10

अभी के लिए, मैंने इस https://gist.github.com/eliotsykes/47516b877f5a4f7cd52f का अनुसरण किया और इसे अभी तक पसंद करते हुए काम कर रहा हूं, हालांकि मैं इसे और कस्टमाइज़ करने की योजना बना रहा हूं।

टर्मिनल में

mkdir ~/.bash

निर्देशिका git-prompt.shमें git contrib से कच्ची फ़ाइल की प्रतिलिपि बनाएँ ~/.bash: https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh

अंदर ~/.bashrcया ~/.bash_profile(वह फ़ाइल चुनें जहां आप सामान्य रूप से कोई भी बैश कस्टमाइज़ेशन / सेटअप लगाते हैं), लाइनें जोड़ें:

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)

जब तक आप एक गिट रेपो के अंदर होते हैं, तब तक आपके बैश प्रॉम्प्ट को रंग बदलने की वर्तमान शाखा को दिखाना चाहिए, अगर इसके अनचाहे परिवर्तन हो गए हों।


आसान और काम!
दानी

यह स्वीकृत उत्तर होना चाहिए, क्योंकि यह स्पष्ट है, संक्षिप्त है, और काम करता है, और यह अन्य प्लेटफार्मों पर भी काम करता है।
मिगुएलमोरिन

2

होम फोल्डर पर जाएं

छिपी हुई फ़ाइलों को दिखाने के लिए Ctrl+ hपर क्लिक करें ।

खुला । bashrcफ़ाइल और अंत में अगला पेस्ट करें:

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\] $ "

यदि आपके पास अपना टर्मिनल खोला, बंद और फिर से खुला है। का आनंद लें!!


नमस्कार, मैंने इसे आज़माया और यह केवल वहीं काम करता है जहाँ मैं सुपरयुसर स्विच करता हूँ, क्या आप मुझे बता सकते हैं कि मैं हमेशा कैसे सक्षम करूँ?
डेनिस स्टिफानोव

0

मेरी समस्या यह थी कि मैंने विकल्प को सक्षम नहीं किया था

एक लॉगिन शेल के रूप में चलाने के आदेश में

टर्मिनलसंपादित करेंप्रोफ़ाइल प्राथमिकताएँकमांड


0

बदलने के

parse_git_branch

साथ में

parse_git_branch 2>/dev/null

अपनी PS1 परिभाषा में और हमेशा के बाद खुशी से रहते हैं।


0

नीचे दी गई पंक्तियों को संलग्न करें ~/.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\]\$ '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.