(मैक) -बैश: __git_ps1: कमांड नहीं मिला


222

मैं टर्मिनल में अपने कमांड प्रोम को बदलने की कोशिश कर रहा हूं। मैं त्रुटि प्राप्त करता रहता हूं:

-bash: __git_ps1: command not found

मैं बस के रूप में टर्मिनल में यह लिखकर यह कोशिश की है: __git_ps1। मैं भी इसे बाहर की कोशिश की है.bash_profile

if [ -f ~/.git-completion.bash ]; then
  source ~/.git-completion.bash
  export PS1='[\W]$(__git_ps1 "(%s)"): '
fi

जैसा कि आप देखने / बताने में सक्षम हो सकते हैं, हां, मेरे पास स्वतः पूर्णता स्थापित है और यह बहुत अच्छा काम करता है!

मुझे यह सवाल आया: " PS1 env चर मैक पर काम नहीं करता है " जो कोड देता है

alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"

इसलिए मैं इसे अपनी .bash_profileउम्मीद से जोड़ता हूं कि यह कुछ बदलेगा। खैर, यह किया है। यह सिर्फ त्रुटि आउटपुट बदल गया।

यहाँ .bash_profileइसके अलावा है:

alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"

if [ -f ~/.git-completion.bash ]; then
  source ~/.git-completion.bash
  export PS1='[\W]$(__git_ps1 "(%s)"): '
fi

और अब यहाँ परिवर्तित त्रुटि आउटपुट है:

sed: (%s): No such file or directory

नोट: मैं भी कोई अंतर नहीं के साथ स्रोत के नीचे उपनाम ले जाया गया है। मेरा git संस्करण 1.7.12.1 है

यह एक साधारण बदलाव होना चाहिए। क्या कोई मेरी सहायता कर सकता है?

संपादित करें 10/13/12

नहीं, मैं निश्चित रूप से स्वयं __git_ps1 को परिभाषित नहीं करना चाहता हूं, लेकिन यह देखने की कोशिश कर रहा हूं कि क्या ऐसा करने से इसे मान्यता दी जाएगी। हां, मेरे पास .git-completion.bashफाइल इंस्टॉल है। यहां बताया गया है कि मैंने अपनी मशीन पर ऑटो कैसे पूरा किया।

cd ~
curl -OL https://github.com/git/git/raw/master/contrib/completion/git-completion.bash
mv ~/git.completion.bash ~/.git-completion.bash

एक ls -laतो सूचीबद्ध करता है .git-completion.bashफ़ाइल।

संपादित करें 10/13/12 - मार्क लोंगेयर (नीचे) द्वारा हल

निम्नलिखित कोड ने मेरे लिए काम किया .bash_profileजबकि अन्य में नहीं ...

if [ -f ~/.git-prompt.sh ]; then
  source ~/.git-prompt.sh
  export PS1='Geoff[\W]$(__git_ps1 "(%s)"): '
fi

एक शेल फ़ंक्शन के रूप में मेरा git-completion.bashपरिभाषित करता है __git_ps1। तुम्हारा है? आप कैसे जानते हैं कि काम पूरा हो रहा है? जब आप टाइप करते हैं तो क्या होता है git h<TAB>?
मई को

जब मैं टाइप करता हूं, तो यह git सहायता के साथ समाप्त हो जाता है [space]
ज्योफ

स्वीकृत उत्तर अच्छा है, लेकिन संकेत को मारकर भी सक्षम किया जा सकता है git <tab>जैसा कि मार्क लॉन्गेयर द्वारा संदर्भित प्रतिबद्ध में दिया गया है।
जैक फ्रॉस्ट

यह न केवल एक अच्छा अन्वेषण प्रश्न है, बल्कि समाधान के लिए एक सहायक संसाधन भी है। एक अच्छी तरह से उत्थान योग्य है।
यनीस ड्रान

OS X 10.8.5 पर स्क्रीन (1) के अंदर बैश चलने पर -f चेक ने इस त्रुटि को ठीक करने का काम किया। पता नहीं क्यों, क्योंकि फ़ाइल की परवाह किए बिना मौजूद थी, लेकिन धन्यवाद कोई भी कम नहीं है!
निक K9

जवाबों:


324

आपने git के विकास के इतिहास git-completion.bashसे इसके संस्करण को स्थापित किया है, masterयह एक प्रतिबद्ध के बाद है __git_ps1जो पूर्ण कार्यक्षमता से एक नई फ़ाइल ( git-prompt.sh) में फ़ंक्शन को विभाजित करता है । इस बदलाव को पेश करने वाला कमिटमेंट , जो औचित्य की व्याख्या करता है, af31a456 है

मैं अब भी सुझाव दूंगा कि आप सिर्फ git-completion.bash(या git-prompt.sh) के संस्करण का स्रोत हैं जो आपके इंस्टॉलेशन के साथ बंडल किया गया है।

हालाँकि, अगर किसी कारण से आप अभी भी अलग से डाउनलोड की गई स्क्रिप्ट का उपयोग करके इस कार्यक्षमता का उपयोग करना चाहते हैं master, तो आपको git-prompt.shइसी तरह डाउनलोड करना चाहिए :

curl -o ~/.git-prompt.sh \
    https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh

... और निम्न पंक्ति को अपने में जोड़ें ~/.bash_profile:

source ~/.git-prompt.sh

फिर आपका PS1चर जिसमें __git_ps1 '%s'ठीक काम करना चाहिए।


आप सही हैं कि मैं स्वयं __git_ps1 को परिभाषित नहीं करना चाहता। मैं बस यह देखने की कोशिश कर रहा था कि क्या वह इसे पहचान पाएगी और यह नहीं। मेरे पास। रूट-कम्प्लीट है।बश मेरी जड़ पर। मैं अपने सवाल को अपडेट करने के लिए ऊपर बताऊंगा कि मुझे ऑटो कैसे काम करना है ...
ज्योफ

@ डिज़ाइनर84: अतिरिक्त जानकारी के लिए धन्यवाद - मुझे लगता है कि अब यह स्पष्ट है कि समस्या क्या है, और मैंने अपने उत्तर को स्पष्टीकरण के साथ अपडेट कर दिया है।
मार्क लॉन्गेयर

यह काम क्यों नहीं करता है? अगर [-f /usr/local/git/contrib/completion/git-completion.bash]; तो स्रोत /usr/local/git/contrib/completion/git-completion.bash निर्यात PS1 = '[\ डब्ल्यू] $ (__ git_ps1 "(% s)"):' फाई
ज्योफ

5
OSX 10.9 पर git 1.8.5.3 के साथ Homebrew के माध्यम से स्थापित, दोनों git-prompt.shऔर git-completion.bashमें पाए जाते हैं `brew --prefix git`/etc/bash_completion.d/
22

1
MacPorts में, पैकेज git-coreद्वारा प्रतिस्थापित किए जाने पर पथ परिवर्तित हो गया git, यह प्रश्न
रेमन डे ला फुएंते

60

OSX 10.9 Mavericks में अपग्रेड करने के बाद मुझे git शेल कमांड को पूरा करने और फिर से काम करने के लिए git प्रॉम्प्ट प्राप्त करने के लिए निम्न फ़ाइलों का संदर्भ देना पड़ा।

मेरे .bash_profile या समान से:

if [ -f /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash ]; then
    . /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash
fi

source /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh

#shell prompt example
PS1='\u $(__git_ps1 "(%s)")\$ '

यह भी
ओएसवी

जबकि @marklongair से स्वीकृत प्रतिक्रिया एक अच्छा विवरण है, मुझे यह सवाल एक त्रुटि संदेश की Google खोज (OS 10.10 में अपग्रेड करने के बाद) के माध्यम से मिला और यह उत्तर मेरे मुद्दे का सबसे सरल समाधान है (बस नए स्थान के लिए मार्ग बदल रहा है) )।
RedBassett

इसने मेरे लिए 10.10.5 योसेमाइट में काम किया, हालाँकि मैंने git-prompt का स्थान बदल दिया ~/.git_prompt.sh। अन्य समाधान काम नहीं किया।
रीइन

मैंने आपकी सुझाई गई लाइनों को .bash_profile में जोड़ दिया , लेकिन मुझे अभी भी त्रुटि मिल रही है:bash: __docker_machine_ps1: command not found
इगोरगानापोलस्की

43

तुम्हे करना चाहिए

$ काढ़ा स्थापित बाश बैश-पूरा गिट

फिर अपने .bashrc में स्रोत "$ (काढ़ा - उपसर्ग) / आदि / bash_completion"।


महान जवाब, निश्चित रूप से सबसे अच्छा तरीका है अगर गिट को काढ़ा के साथ स्थापित किया जाए। लेकिन मुझे लगता है कि आपको इसके लिए स्रोत चाहिए: स्रोत $ (काढ़ा
उपसर्ग

1
@febLey हां, स्थान बदल गया। मैंने जवाब अपडेट कर दिया है। धन्यवाद।
स्टीवन शॉ

यह काम नहीं करता है। मुझे त्रुटियाँ मिलती हैं: bash: /usr/local/etc/bash_completion.d/git-prompt.sh: अनुमति से इंकार करने से इनकार कर दिया: __docker_machine_ps1: कमांड नहीं मिला
GGanapolsky

14

मेरे लिए एक आकर्षण की तरह काम किया:

अपने टर्मिनल में चलें:

curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > ~/.bash_git

Bash_profile खोलें / बनाएं:

$ vi ~/.bash_profile

फ़ाइल में निम्नलिखित जोड़ें:

source ~/.bash_git
export PS1='\[\033[01;32m\]os \[\033[01;34m\]\w $(__git_ps1 "[%s]")\$\[\033[00m\] '
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUPSTREAM="auto"

अंत में, इसका उपयोग करने वाला स्रोत:

$ source ~/.bash_profile

इससे समस्या का समाधान हो जाएगा bash: __git_ps1: command not found

इसके अलावा आपका संकेत "ओएस" में बदल जाएगा। "Os" को कुछ और में बदलने के लिए, निर्यात PS1 लाइन में "os" स्ट्रिंग को संशोधित करें।


मुझे अभी भी एक त्रुटि sh -c "clear && / bin / bash" bash: __docker_machine_ps1: कमांड हर बार नहीं मिलती है जब मैं डॉकर सीएलआई में प्रवेश करता हूं।
इगोरगानापोलस्की

8

MacOS Sierra और git संस्करण 2.10.1 <2017-2-06> के लिए समाधान

चरण 1: गिट स्थापित करें

यदि आप पहले से ही नवीनतम गिट स्थापित करते हैं, तो आप इस चरण को छोड़ सकते हैं।

ब्राउज़र से git पैकेज डाउनलोड करें https://git-scm.com/download/

नोट: यदि आप के साथ स्थापित curl [option] https://... डाउनलोड करने के लिए विकल्प के , तो आपको यह सुनिश्चित करना होगा कि आपका सिस्टम SSL का समर्थन करता है। इसलिए नए कॉमर के लिए, ब्राउज़र से डाउनलोड करना और सीधे गिट इंस्टॉलर से इंस्टॉल करना बहुत आसान है।

स्थापना सत्यापन:
  • दिखाएं कि आपकी git निर्देशिका कहां है: which git
  • वर्तमान में आपका कौन सा संस्करण दिखा रहा है: git --versionवर्तमान संस्करण 2.10.1 होना चाहिए।

चरण 2: अपने गिट प्रोफ़ाइल को अपने खोल में जोड़ें

  1. अपना शेल प्रोफ़ाइल खोलें:
    • nano ~/.bash_profileया nano ~/.bashrcनिर्भर करता है कि आपका संशोधन कहां है।
  2. फ़ाइल में निम्न कोड जोड़ें:
    • source /usr/local/git/contrib/completion/git-completion.bash
    • source /usr/local/git/contrib/completion/git-prompt.sh

नोट: git इंस्टॉलेशन स्थान ऑप्ट / डायरेक्टरी से usr / लोकल / OSX अपग्रेड के बाद El Capitain में बदल गया, और यही कारण है कि ऊपर दिए गए कुछ पुराने उत्तर MacOS Sierra में अब काम नहीं करते हैं।

  1. अपने PS1 कॉन्फ़िगरेशन में निम्न कोड जोड़ें:

    • विकल्प 1: सीधे अपने PS1 में जोड़ें: export PS1='\w$(__git_ps1 "(%s)") > '

      मैं इस सरल दृष्टिकोण को पसंद करता हूं क्योंकि मुझे पहले से ही पता .git-completion.bashहै कि मेरे घर की निर्देशिका में क्या है, और मैं इसके सामने अन्य शीघ्र प्रारूप जोड़ सकता हूं। यहाँ आपके संदर्भ के लिए मेरा व्यक्तिगत संकेत है:export PS1='\t H#\! \u:\w$(__git_ps1 "{%s}") -->> '
    • विकल्प 2: एक चयन स्क्रिप्ट जोड़ें

    अगर [-f ~ / .git-पूरा.बैश]; फिर
          निर्यात PS1 = '\ w $ (__ git_ps1 "(% s)")> "
    फाई
  2. प्रोफ़ाइल को सहेजें और उसका उपयोग करें: source ~/.bash_profileयाsource ~/.bashrc

अब आपको गिट प्रॉम्प्ट को ठीक से काम करते हुए देखना चाहिए और दिखाता है कि आप अभी किस शाखा में हैं।

5

योसमाइट में अपग्रेड करते समय मुझे यही समस्या थी।

मुझे सिर्फ पुराने रास्ते के बजाय संशोधित ~/.bashrcकरना था source /usr/local/etc/bash_completion.d/git-prompt.sh

फिर . ~/.bashrcप्रभाव पाने के लिए अपने स्रोत को फिर से ।


5

रंगों के साथ उच्च सिएरा साफ समाधान!

कोई डाउनलोड नहीं। कोई काढ़ा नहीं। कोई Xcode नहीं

बस इसे अपने ~ / .bashrc या ~ / .bash_profile में जोड़ें

export CLICOLOR=1
[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh ] && . /Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh
export GIT_PS1_SHOWCOLORHINTS=1
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUPSTREAM="auto"
PROMPT_COMMAND='__git_ps1 "\h:\W \u" "\\\$ "'

4

bash के लिए __git_ps1 अब git-prompt.sh में / inrr/local/etc/bash_completion.d पर पाया गया है, जो मेरे काढ़ा स्थापित git संस्करण 1.8.1.5 पर है।


2

यह OS में 10.8 .bash_profile में काम करता है

if [ -f ~/.git-prompt.sh ]; then
  source ~/.git-prompt.sh
  export PS1='YOURNAME[\W]$(__git_ps1 "(%s)"): '
fi

त्रुटि को ठीक नहीं करता है: bash: __docker_machine_ps1: कमांड नहीं मिली
IgorGanapolsky

2

source /opt/local/share/git-core/git-prompt.shMacports के लिए मुझे जोड़ना था: to my ./profile


1
@IgorGanapolsky मुझे लगता है कि आप की जरूरत नहीं है macports स्थापित? बस करो touch ~/.profile। /Opt/local/share/git-core/git-prompt.sh: लेकिन आप स्पष्ट रूप से एक फ़ाइल की आवश्यकता
velop

2

यदि आप Git को अपग्रेड करने के लिए Homebrew का उपयोग करने की उम्मीद कर रहे हैं और आपने अपने सिस्टम को सामान्य रूप से पुराना कर दिया है (जैसा कि मैंने किया था), तो आपको Homebrew को पहले अप-टू-डेट पहले लाने की आवश्यकता हो सकती है ( काढ़ा अद्यतन के अनुसार : निम्नलिखित अनुपयोगी कार्यशील ट्री फ़ाइलों को मर्ज द्वारा अधिलेखित किया जाएगा: धन्यवाद @ क्रिस-फ्रिसिना)

पहले होमब्रे को वर्तमान संस्करण के अनुरूप लाएँ

सीडी / यूएसआर / स्थानीय
जीआईटी भ्रूण मूल
जीआईटी रीसेट - भार उत्पत्ति / मास्टर

फिर Git अपडेट करें:

काढ़ा उन्नयन गिट

समस्या सुलझ गयी! ;-)


2

कम से कम Xcode 6 के साथ, आपके पास पहले से ही है git-completion.bash। यह Xcode ऐप बंडल के अंदर है।

बस इसे अपने .bashrc में जोड़ें:

source `xcode-select -p`/usr/share/git-core/git-completion.bash

2
  1. डाउनलोड फ़ाइलों git-prompt.sh और Git-completion.bash इस से Git पूरा होने
  2. फ़ाइलों का नाम बदलें।
  3. उन फाइलों को अपने होम डायरेक्टरी में ले जाएं।
  4. स्रोत फ़ाइल को .bash_profile में जोड़ें

    source ~/git-completion0.bash
    source ~/git-prompt0.sh
    and four to trigger the code block.
    

1

मुझे पता है कि यह एक असली जवाब नहीं है ...

मैं अपने .bashrc में git-prompt.sh सोर्सिंग के साथ कुछ अजीब मुद्दे थे इसलिए मैंने दूसरे समाधान की तलाश शुरू कर दी। यह वाला: http://www.jqno.nl/post/2012/04/02/howto-display-the-current-git-branch-in-your-prompt/ __git_ps1 का उपयोग नहीं करता है और लेखक यह भी दावा करता है मैक पर (अब यह मेरे उबंटू पर पूरी तरह से काम करता है और इसे ट्विक करना आसान है)।

मुझे उम्मीद है यह मदद करेगा!


1

मैं उदगम पर गिट हब के लिए कोर्स कर रहा था और इसी मुद्दे पर चल रहा था। यहाँ मेरा अंतिम कोड है जो सही ढंग से काम कर रहा है।

# Change command prompt
alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \ .   (.*\)/(\1)/'"

if [ -f ~/.git-completion.bash ]; then
  source ~/.git-completion.bash
  export PS1='[\W]$(__git_ps1 "(%s)"): '
fi

source ~/.git-prompt.sh
export GIT_PS1_SHOWDIRTYSTATE=1
# '\u' adds the name of the current user to the prompt
# '\$(__git_ps1)' adds git-related stuff
# '\W' adds the name of the current directory
export PS1="$purple\u$green\$(__git_ps1)$blue \W $ $reset"

यह काम करता हैं! https://i.stack.imgur.com/d0lvb.jpg


0

इसने मेरे लिए काम किया, और इसमें रंगीन git आउटपुट और प्रॉम्प्ट में एक संकेतक है कि क्या फाइलें बदल गई हैं / जोड़ी गई हैं, दाईं ओर:

GIT_PS1_SHOWDIRTYSTATE=true

. /usr/local/Cellar/git/1.8.5.2/etc/bash_completion.d/git-completion.bash
. /usr/local/Cellar/git/1.8.5.2/etc/bash_completion.d/git-prompt.sh

PS1='\[\033[32m\]\u@\h\[\033[00m\]:\[\033[34m\]\w\[\033[31m\]$(__git_ps1)\[\033[00m\]\$ '

सही पथ का उपयोग करना सुनिश्चित करें! मैंने git को स्थापित करने के लिए homebrew का उपयोग किया है, brew list gitअपने वर्तमान इंस्टॉलेशन का पथ प्राप्त करने के लिए उपयोग करें।

एक कठिन कोडित पथ का उपयोग नहीं करना अच्छा होगा, लेकिन यह नहीं पता कि वर्तमान स्थापना के लिए रास्ता कैसे प्राप्त किया जाए।

यहाँ और अधिक जानकारी: http://en.newinstance.it/2010/05/23/git-autocompletion-and-enhanced-bash-prompt/


0

गिट के लिए, वहाँ हैं /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh। और कृपया देखिए /etc/bashrc_Apple_Terminalभी।

इसलिए, मैंने इन्हें इसमें डाला ~/.bash_profile:

if [ -f /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh ]; then
  . /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh
  export GIT_PS1_SHOWCOLORHINTS=1
  export GIT_PS1_SHOWDIRTYSTATE=1
  PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND; }__git_ps1 '\u:\w' '\\\$ '"
fi

अभी भी यह त्रुटि हो रही है:bash: __docker_machine_ps1: command not found
इगोरगानापोलस्की

0

प्राक्कथन: हाईस्क्लेर्क के उत्तर के उत्तर पर टिप्पणी न करने और नए सिरे से बनाने के लिए खेद है , बस पर्याप्त प्रतिनिधि नहीं है।

कृपया नहीं, अगर आपने Xcode या होम-काप के माध्यम से गिट स्थापित नहीं किया है, तो आप संभवतः bash लिपियों haysclarks को संदर्भित करेंगे /Library/Developer/CommandLineTools/, और अंदर नहीं /Applications/Xcode.app/Contents/Developer/, इस प्रकार लाइनों को निम्नलिखित .bashrc में शामिल करने के लिए बना सकते हैं:

if [ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ]; then
    . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
fi

source /Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh

यदि आप गिट-प्रॉम्प्ट का उपयोग करना चाहते हैं तो आपको उन लाइनों की आवश्यकता होगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.