मैक ओएस एक्स पर काम करने के लिए git-complete.bash कैसे प्राप्त करें?


92

मैंने अपने साथ जोड़ने के लिए http://blog.bitfluent.com/post/27983389/git-utilities-you-cant-live-without का अनुसरण किया हैgit-completion.bash/opt/local/etc/bash_completion.d/git-completion

और मैंने PS1='\h:\W$(__git_ps1 "(%s)") \u\$ 'अपने .bashrc_profile में डाल दिया

लेकिन अब मुझे यह -bash: __git_ps1: command not foundसब कुछ मिल रहा है जो मैं करता हूं cd

क्या आप मुझे बता सकते हैं कि मैं क्या याद कर रहा हूँ?


जवाबों:


65

मैंने अपने नए स्नो लेपर्ड इंस्टॉलेशन पर MacPorts का उपयोग करके गिट स्थापित किया । MacPorts .dmg छवि से स्थापित होने के बाद, ये Terminal.app में कमांड होंगे:

sudo port selfupdate
sudo port install git-core +bash_completion

यदि आप SVN रिपॉजिटरी और डॉक्स से खींचने के लिए समर्थन चाहते हैं, तो दूसरी पंक्ति के बजाय इसका उपयोग करें:

sudo port install git-core +bash_completion +doc +svn

फिर अपने ~ / .profile या ~ / .bash_profile में निम्न जोड़ें:

# MacPorts बैश ​​शेल कमांड पूरा हुआ
अगर [-f / opt / local / etc / bash_completion]; फिर
    । / Opt / स्थानीय / etc / bash_completion
फाई

या माउंटेन लायन पर संस्करण 2.1.2 के बाद से MacPorts:

# MacPorts बैश ​​शेल कमांड पूरा हुआ
अगर [-f /opt/local/etc/profile.d/bash_completion.sh]; फिर
  । /opt/local/etc/profile.d/bash_completion.sh
फाई

या git के नए संस्करणों के साथ MacPorts के लिए:

अगर [-f /opt/local/share/git-core/git-prompt.sh]; फिर
    । /opt/local/share/git-core/git-prompt.sh
फाई

नोट: बैश 4.1 या उच्चतर bash_completion.sh द्वारा आवश्यक है। अगर काम पूरा नहीं होता है echo $BASH_VERSIONतो यह देखने की कोशिश करें कि क्या यह मुद्दा है। यदि ऐसा है, तो टाइप करके MacPorts बैश ​​दर्ज करें bashऔर फिर से पूरा होने का प्रयास करें।


मैं अभी कॉपी पेस्ट करता हूं, और मुझे अभी भी ओपी में जो त्रुटि है वह मिल जाती है। = \। आप कैसे बताते हैं कि क्या शामिल किया गया है? मैं तब bash_completion खट्टा नहीं है
NullVoxPopuli

नोट के नए संस्करणों के साथ git / macport / bash- पूरा करने का संकेत एक अलग फ़ाइल में है। देखें: trac.macports.org/ticket/36334 if [ -f /opt/local/share/git-core/git-prompt.sh ]; then . /opt/local/share/git-core/git-prompt.sh fi
Yehosef

3
क्योंकि 4.1 या बेहतर की /opt/local/etc/profile.d/bash_completion.shजरूरत है $BASH_VERSION, मुझे Mac OSorts 2.1.3 के साथ Mac OS X 10.8.3 पर निम्न कार्य करना था: Mac OS X लॉगिन शेल को अपने डिफ़ॉल्ट /bin/bash(3.2.48 (1) -release) से MacPorts /opt/local/bin/bash(4.2 ) पर स्विच करें .42 (2) -release) को यहाँ वर्णित किया गया है: stackoverflow.com/a/791244/287984। मूल रूप सेif [ `grep /opt/local/bin/bash /etc/shells` ]; then echo /opt/local/bin/bash | chsh -s /opt/local/bin/bash; else echo /opt/local/bin/bash | sudo tee -a /etc/shells; chsh -s /opt/local/bin/bash; fi
उवे गुंटर

मेरे लिए बहुत अच्छा काम किया। को macports + से यहां दिए गए सभी परिवर्तनों के /bin/bashसाथ Terminal.app में प्रतिस्थापित करना था । /opt/local/bin/bash.bash_profile
bgs

1
4.1 को बाद में ले जाने के लिए या बाद में आप यहां दिए गए निर्देशों का पालन कर सकते हैं: apple.stackexchange.com/questions/70132/…
ThomasW

55

यदि आपने होमब्रे का उपयोग करके गिट स्थापित किया है तो आप मैकपोर्ट्स की सलाह को थोड़ा समायोजित कर सकते हैं और इसे अपने .bash_profileऔर में जोड़ सकते हैं.bashrc

if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then
. `brew --prefix`/etc/bash_completion.d/git-completion.bash
fi

यह जांचने का सबसे अच्छा तरीका है कि आपके पास निष्पादित करने के लिए होमब्रे आईएसटी का उपयोग करके सही तरीके से स्थापित है

brew info git

और गिट बैश पूरा होने की संस्थापन निर्देशिका के लिए आउटपुट की जाँच करें

Git का नवीनतम संस्करण (1.7.12) भी संकेत को सक्षम करने के लिए निम्नलिखित की आवश्यकता है।

if [ -f `brew --prefix`/etc/bash_completion.d/git-prompt.sh ]; then
    . `brew --prefix`/etc/bash_completion.d/git-prompt.sh
fi

अधिक जानकारी के लिए __git_ps1, इस स्टैक में superuser.com/a/477749/90231 उत्तर देखें ।
रिचवेल

26

आपको बस git-completion.bashअपने यूजर होम binडायरेक्टरी में फाइल को रखना है और आपको .profileया .bash_profileफाइल में निम्नलिखित को रखना है :

export PATH="$HOME/bin:$PATH"
source ~/bin/git-completion.bash
PS1='[\u@\h \w$(__git_ps1 " (%s)")]\$ '

यह क्या करता है सुनिश्चित करें कि आपका स्थानीय बिन पथ में है और sourceकमांड को चीजें मिल रही हैं। फिर निश्चित रूप से PS1 परिवर्तन वर्तमान में जाँच की गई शाखा को संकेत देता है।

तो, कोई भी MacPort GIT के "पूर्ण" संस्करण को स्थापित करने के लिए स्थापित नहीं होता है (विशेषकर यदि आप पहले से ही इसे स्थापित कर चुके हैं तो चिढ़)।



1
उन लोगों के लिए जो अपने प्रांप्ट में रंगों के साथ उस PS1 चीज़ को कैसे जोड़ते हैं, यह देखने के लिए देखें: stackoverflow.com/questions/816790/…
निकोले

1
अधिक सटीक रूप से, git-complete.bash को आपके अंदर कहीं होना चाहिए $PATH। मैंने अपना खदान लगाने का फैसला किया /usr/local/bin/ताकि मुझे अपने मौजूदा को संशोधित करने की जरूरत न पड़े $PATH
मेटाविडा

13

जबकि पुराने MacPorts के लिए वर्तमान उत्तर सही है, एक ही त्रुटि के परिणामस्वरूप सबसे वर्तमान MacPorts के साथ एक नया मुद्दा है।

वर्तमान बैश-समापन पैकेज (2.0 आर 1) को ठीक से काम करने के लिए कम से कम एक बैश 4.1 की आवश्यकता होती है। हमेशा की तरह OS X टर्मिनल का उपयोग करने पर /bin/bashइसे 3.x मिलता है। आपको /opt/local/bin/bash -lयहाँ MacPorts प्रलेखन में वर्णित टर्मिनल सेटिंग्स को बदलने के लिए बदलना होगा : http://trac.macports.org/wiki/howto/bash-completion


यह सबसे सही उत्तर है क्योंकि मुझे केवल macports को अपडेट करने के बाद समस्या होने लगी थी। टर्मिनल से macports bash का उपयोग करने का एकमात्र नकारात्मक पक्ष यह है कि अब यह मुझे चल रही प्रक्रियाओं को समाप्त करने के बारे में चेतावनी देता है जब मैं अपनी टर्मिनल विंडो को बंद करने की कोशिश करता हूं - क्या आप इसमें भाग लेते हैं?
विच

6

आपको कमांड पूर्ण होने वाले कार्यों को स्रोत करने की आवश्यकता है। PS1 से पहले अपने .bashrc_profile में जोड़ें:

. /opt/local/etc/bash_completion.d/git-completion


5

अनायास यह फिर से टूट गया है। इस बार इसके git लोग 1.7.12-1 संस्करण के साथ। पूर्ण कार्यक्षमता के बिना लोगों को केवल त्वरित कार्यक्षमता प्रदान करने के लिए (जो चीज़ों को धीमा कर सकता है), उन्होंने शीघ्र कार्यक्षमता को bash_completion / git और अपनी फ़ाइल git-prompt.sh से बाहर निकाल दिया।

इसलिए @Lara द्वारा वर्णित bash_completion जोड़ना केवल आपको पूरा करना होगा (टैब टैब टैग / शाखा नामों को पूरा करता है)।

ऐसा करने के लिए __git_ps1आप इसे अपने PS1 प्रॉम्प्ट में उपयोग कर सकते हैं, आपको अपने ~ / .profile में निम्न जोड़ना होगा।

. /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh

कुछ पृष्ठभूमि यहाँ है - https://bbs.archlinux.org/viewtopic.php?pid=1163632#p11113632


विचाराधीन फ़ाइल: raw.github.com/git/git/master/contrib/completion/git-prompt.sh
papercowboy



2

माउंटेन लायन और मैक-पोर्ट्स के लिए मुझे अपने .bash_profile में निम्न पंक्तियों का उपयोग करने की आवश्यकता थी ताकि दोनों __git_ps1 और सामान्य रूप से चलने के लिए पूर्णता प्राप्त कर सकें:

# Bash shell command completion
if [ -f /opt/local/share/doc/git-core/contrib/completion/git-completion.bash ]; then
  . /opt/local/share/doc/git-core/contrib/completion/git-completion.bash
fi

if [ -f /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh ]; then
  . /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh
fi

1

मैं काढ़ा का उपयोग करता हूं, इसलिए एक मास्टर bash_completionस्क्रिप्ट जो सभी लोगों bash_completion.dको प्रदान नहीं की गई लगती है। जो समाधान सिर्फ एक स्क्रिप्ट को git पूर्णता को जोड़ने के लिए चलाने का प्रस्ताव करते हैं, वे एक्स्टेंसिबल नहीं हैं, क्योंकि विभिन्न पैकेज अलग-अलग पूर्ण स्क्रिप्ट जोड़ देंगे, और आप शायद उन सभी को चलाना चाहते हैं। इसलिए मैंने इसे (आर्क लिनक्स से अनुकूलित) जोड़ा /etc/bashrc:

# source compat completion directory definitions
BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d
if [[ -d $BASH_COMPLETION_COMPAT_DIR && -r $BASH_COMPLETION_COMPAT_DIR && \
    -x $BASH_COMPLETION_COMPAT_DIR ]]; then
    for i in $(LC_ALL=C command ls "$BASH_COMPLETION_COMPAT_DIR"); do
        i=$BASH_COMPLETION_COMPAT_DIR/$i
        [[ -f $i && -r $i ]] && . "$i"
    done
fi

1

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

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

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

यह एकमात्र उत्तर था जो वास्तव में मेरे लिए काम करता था। जब आप अधूरा आदेश टाइप करते हैं तो अन्य उत्तर अजीब त्रुटियों का उत्पादन कर रहे थे जैसेgit br<TAB>
r00m

0

एडम के। जॉनसन की पोस्ट के अलावा

आप निम्नलिखित भी डाल सकते हैं ...

# MacPorts Bash shell command completion
if [ -f /opt/local/etc/bash_completion ]; then
    . /opt/local/etc/bash_completion
fi

... आपके / etc / प्रोफाइल में, यदि आप चाहें।

इस तरह से सिस्टम के सभी उपयोगकर्ता निर्देशिका में स्थापित किसी भी बैश पूर्ण स्क्रिप्ट से लाभान्वित होंगे "/opt /local/etc/bash_completion.d/"।


0

हालांकि 2011 से grundprinzip द्वारा ऊपर दिया गया उत्तर अभी भी ठीक काम करता है, मैं अब एक और हालिया उत्तर जोड़ना चाहता था कि अब एक Homebrew पैकेज बैश-समापन ( सूत्र , रेपो ) है जो इसे और भी आसान बनाता है। (इसमें गिट के साथ-साथ अन्य सामान्य उपकरण भी शामिल हैं।)

आज मैश बश 3 के साथ जहाज, लेकिन आप brew install bashबैश 4 प्राप्त कर सकते हैं । यदि आप बैश 4 चला रहे हैं, तो बैश-पूर्ण की नई 2.x शाखा स्थापित करें।

बैश ४

  1. Daud:

    brew install bash-completion@2
  2. इसमें जोड़ें ~/.bash_profile:

    if [ -f /usr/local/share/bash-completion/bash_completion ]; then
      . /usr/local/share/bash-completion/bash_completion
    fi

बैश ३

यदि आप macOS पर स्टॉक बैश 3.x के साथ रहना चाहते हैं तो इसके बजाय इन निर्देशों का पालन करें।

  1. Daud:

    brew install bash-completion
  2. इसमें जोड़ें ~/.bash_profile:

    echo "[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion" >> ~/.bash_profile

संदर्भ: http://davidalger.com/development/bash-completion-on-os-x-with-brew/


-2

मुझे लगता है कि आप अपने लॉगिन में फ़ाइल को सोर्स करना भूल जाते हैं .bashrc, आप कुछ ऐसा जोड़ सकते हैं:

. ./path/to/your/file.ext

.एक स्थान का उपयोग करके वर्तमान संदर्भ में फ़ाइल को चलाता है।

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