git 1.9.3 या बाद का: उपयोग करें __git_ps1
Git नामक एक शेल स्क्रिप्ट प्रदान करता है git-prompt.sh
, जिसमें एक फ़ंक्शन शामिल होता है __git_ps1
जो
PS1 प्रॉम्प्ट को जोड़ने के लिए टेक्स्ट को प्रिंट करता है (शाखा का नाम भी शामिल है)
इसका सबसे बुनियादी उपयोग है:
$ __git_ps1
(master)
यह एक वैकल्पिक प्रारूप स्ट्रिंग भी लेता है:
$ __git_ps1 'git:[%s]'
git:[master]
इसे कैसे प्राप्त करें
सबसे पहले, फ़ाइल को कहीं (जैसे ~/.git-prompt.sh
) पर कॉपी करें ।
विकल्प 1: अपने फाइल सिस्टम पर मौजूदा कॉपी का उपयोग करें। उदाहरण (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
विकल्प 2: स्क्रिप्ट को GitHub से खींचें ।
इसके बाद, निम्न पंक्ति को अपने में जोड़ें .bashrc/.zshrc
:
source ~/.git-prompt.sh
अंत में, अपने PS1
फोन __git_ps1
को कमांड-प्रतिस्थापन के रूप में बदलें :
दे घुमा के:
PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
Zsh:
setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
git <1.9.3
लेकिन ध्यान दें कि केवल 1.9.3 (मई 2014) या बाद में आपको उस शाखा का नाम सुरक्षित रूप से प्रदर्शित करने की अनुमति देता है (!)
रिचर्ड हैनसेन द्वारा प्रतिबद्ध 8976500 देखें ( richardhansen
) :
Bash और zsh दोनों PS1 का मान पैरामीटर विस्तार , कमांड प्रतिस्थापन , और अंकगणितीय विस्तार के अधीन हैं ।
PS1
दो- या तीन-तर्क मोड में चलने पर कच्चे, गैर-शाखा वाले शाखा नाम को शामिल करने के बजाय, शाखा नाम रखने वाले PS1
चर का संदर्भ देने के लिए निर्माण करें।
क्योंकि गोले पुनरावृत्ति का विस्तार नहीं करते हैं, यह विशेष रूप से तैयार की गई शाखा नामों जैसे कि मनमाने कोड निष्पादन से बचता है
'$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)'.
क्या कुटिल दिमाग एक शाखा का नाम होगा? ;) ( एक माँ के रूप में xkcd में )
और ज्यादा उदाहरण
still_dreaming_1 टिप्पणियों में रिपोर्ट :
यदि आप xterm
(मेरे में .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)\$ '
सब कुछ एक अलग रंग है, जिसमें शाखा भी शामिल है।
लिनक्स मिंट में 17.3 दालचीनी 64-बिट:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w\[\033[00m\]$(__git_ps1) \$ '