पूरा होने का उपयोग नहीं कर रहा है Homebrew की `गिट`


144

OSX के git का उपयोग करते समय, एक फ़ाइल को संशोधित करने के बाद, मैं बस कर सकता हूं git commit <tab>, और जो फ़ाइल के नाम को संशोधित किया गया है , उसे ऑटो पूरा करेगा। हालांकि, अगर मैं होमब्रे से गिट का एक नया संस्करण स्थापित करता हूं और मैं इसका उपयोग करता हूं, तो यह सुविधा अब काम नहीं करती है (जिसका अर्थ है कि मैं दबाता हूं <tab>और यह सिर्फ मुझसे पूछता है "मैं किस फ़ाइल पर इसे करना चाहता हूं, यहां तक ​​कि उन लोगों को भी शामिल करें जिनमें कोई बदलाव नहीं है" )।

क्या किसी ने कुछ प्रकाश डाला क्यों, और कैसे हल किया जाए? मैं होमब्रे के गिट का उपयोग करना पसंद करूंगा, क्योंकि यह अधिक अद्यतित है।

मेरा शेल zsh है, और न तो स्थापित करना bash-completionया zsh-completionsकाम करना (होमब्रे के पोस्ट- इंस्टॉलेशन निर्देशों का पालन करने के बाद भी)।

इसके अलावा, होमब्रे के साथ गिट स्थापित करने के बाद यह कहता है

Bash completion has been installed to: /usr/local/etc/bash_completion.d
zsh completion has been installed to: /usr/local/share/zsh/site-functions

तो क्या मुझे उनमें से एक का उपयोग करने में सक्षम नहीं होना चाहिए?


क्या के संस्करण zshऔर gitआप उपयोग कर रहे?
20'13

होमब्रे से नवीनतम। zsh 5.0.2 और git 1.8.1.3
user137369

क्या अन्य gitकार्य पूर्ण होते हैं ( git co<TAB>==> git commit, उदाहरण के लिए)?
simont

2
मुझे लगता है कि कुछ अलग मुद्दे यहाँ खत्म हो रहे हैं, लेकिन मेरे द्वारा तय की गई शराब के माध्यम से गिट स्थापित करना। लगता है zsh-completionsकि मैक के साथ खुश नहीं था, हालांकि यह पहले ठीक काम किया (संभवतः 0.17.x पर आँख बंद करके अपडेट किया गया)।
ti7

जवाबों:


287

आप देख रहे हैं:

brew install git bash-completion

जैसा कि Warpc की टिप्पणी में कहा गया है, आपको होमब्रेव के ~/.bash_profileबैश-पूरा होने के लिए निम्नलिखित को जोड़ना होगा :

if [ -f $(brew --prefix)/etc/bash_completion ]; then
    . $(brew --prefix)/etc/bash_completion
fi

जब आप बैश-पूर्ण फ़ॉर्मूला स्थापित करते हैं, तो उपरोक्त कावेट्स में उल्लेख किया गया है।


नोट: यदि आप बैश v4 का उपयोग कर रहे हैं या बाद में (इसके माध्यम से brew install bash) तो आप उपयोग करना चाहते हैं brew install bash-completion@2, टैब पूर्णता को सक्षम करने के लिए निम्नलिखित को जोड़ने के ~/.bash_profileरूप में वर्णित किया गया है:

export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"

अतिरिक्त निर्यात git, docker, youtube-dl और अन्य पूर्णताओं के लिए आवश्यक है, जिन्हें $(brew --prefix)/etc/bash_completion.d/निर्देशिका में शामिल किया जा सकता है ।


3
मेरा खोल zsh है। इसका मतलब है कि मुझे क्या करना चाहिए brew install git zsh-completions? इसके अलावा, होमब्रे के साथ गिट स्थापित करने के बाद यह कहता है Bash completion has been installed to: /usr/local/etc/bash_completion.d zsh completion has been installed to: /usr/local/share/zsh/site-functions, तो क्या मैं उनमें से एक का उपयोग नहीं कर सकता हूं?
user137369

2
स्थापित करने के बाद न तो स्थापित bash-completionया zsh-completionsकाम किया (होमब्रे के निर्देशों का पालन करने के बाद भी)।
user137369 3

12
क्या आपने इस सामग्री को कोसने के लिए ~ / .bash_profile में भी जोड़ा था: यदि [-f $ (काढ़ा - उपसर्ग) / etc / bash_completion]; फिर । $ (काढ़ा - उपसर्ग) / आदि / bash_completion फाई
वॉरपीसी

5
मैंने पहले से ही बिना काढ़ा के गिट स्थापित किया है। अब मैं काढ़ा का उपयोग करके bash_completion स्थापित करना चाहता हूं। मैं शराब की
भठ्ठी

3
यह ध्यान देने योग्य है कि काढ़ा बनाने के लिए गिट स्थापित करना इस काम के लिए आवश्यक है। मुझे पता नहीं था कि git का सेब संस्करण समस्या का हिस्सा था। इससे पहले कि मुझे पता था कि मैंने इस जवाब को
अस्वीकार

109

यह आपके टर्मिनल को पुनः आरंभ करने के बिना OSX पर काम कर रहा है।

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash && echo "source ~/.git-completion.bash" >> ~/.bash_profile && source ~/.bash_profile

14
उपयोग करते समय इसे वन-लाइनर कहना थोड़ा धोखा है &&। किसी भी बैश स्क्रिप्ट की तरह एक लाइनर हो सकता है।
user137369

1
आप सच्चे एमवीपी हैं!
15

2
निश्चित रूप से brew installविधि से बेहतर है । बस, क्योंकि यह काम करता है।
ढाका

2
एक समाधान पर घंटों के लिए खोज के रूप में क्यों टकराव को पूरा करने के आदेश नहीं उठा रहा था। अंत में, यह काम किया! आपको बहुत - बहुत धन्यवाद!
TheAmazingKnight

1
यह वास्तविक समाधान अधिक आसान है
रिगिन ओमन

22

मामले में कोई और मेरी गूंगा गलती करता है, कोशिश करो brew install git। मैं उस का उपयोग कर रहा था gitजो Xcode के साथ आता है और मुझे यह एहसास नहीं था कि मैंने ऑटोबॉम्प्लिट्स प्राप्त करने के लिए Homebrew के गिट को कभी स्थापित नहीं किया है।


19

किसी कारण से मैं फ़ाइल को याद कर रहा था, $(brew --prefix)/etc/bash_completionइसलिए @Graham Perks का सही उत्तर मेरे काम नहीं आया

यह मेरे मामले में तय किया गया था:

brew unlink bash-completion
brew link bash-completion

@ ग्राहम पिक्सेल के जवाब का पालन करने के बाद, इसने आखिरकार मेरे लिए काम कर दिया।
ल्यूक

यह भी बस मेरे लिए Homebrew 1.6.0, git 2.17.0 (हब 2.2.9), और bash-समापन 1.3 के साथ OS X Sierra 10.12.6 पर काम किया।
जारेड

10

मैंने इस समस्या का हल निकाल लिया है जो निष्पादित होने पर $(brew --prefix)/etc/bash_completionवापस लौट आया Permission denied। तो एक साधारण के बाद:

chmod +x $(brew --prefix)/etc/bash_completion

सब कुछ अब ठीक काम कर रहा है। मैं सोच रहा हूँ कि क्यों Homebrew bash_completionस्थापना पर फ़ाइल को निष्पादन योग्य नहीं बनाता है , हालांकि।


5
नहीं, यह गलत है। bash_completionका अर्थ है source'डी' इसलिए परिभाषाएं आपके खोल में हैं; क्रियान्वयन का कोई प्रभाव नहीं पड़ेगा।
टॉडकूफमैन

5

काम करने का हल मिला। यह बहुत हाल ही में (16 घंटे पहले लिखा गया है, और 2 घंटे पहले प्रतिबद्ध है), और यह सीधे होमब्रे से आता है

brew install git --without-completions

बस कोशिश की, और यह अंत में के रूप में काम करता है।


3
मैं यह नहीं देखता कि gitबिना पूरा किए कैसे काम पूरा करने की स्थिति में सुधार हो सकता है। मेरा मानना ​​है कि ग्राहम पर्क्स का जवाब stackoverflow.com/a/14970926/1199564 को सही उत्तर के रूप में चिह्नित किया जाना चाहिए।
एमजीडी

मेरे पास एक समान मुद्दा था और मैंने git --without-completionsउस bash-completion.bashफ़ाइल को पुनः स्थापित करने और सोर्सिंग से हल किया है .bash_profileजो शायद मानक प्रक्रिया का पालन करने से पूरी तरह से ओवरराइड करता है।
लियोनार्डो

1
यह सही जवाब नहीं है। @ त्यागम भत्तों का उत्तर सही है।
कैंटजेनिक

@CantGetANick ग्राहम के जवाब ने मेरे मुद्दे को हल नहीं किया, यह किया, यही कारण है कि मैंने इसे चिह्नित किया।
user137369

1
User137369 के साथ 100% सहमत: मेरे पास पहले से ही homebrew का बैश-समापन पैकेज स्थापित था, इसलिए @ graham का उत्तर संभवतः मेरे लिए काम नहीं कर सका। हालांकि, brew install gitसब कुछ तय किया गया है - (के लिए कोई ज़रूरत नहीं - पूरा)। मुझे लगता है कि यह भी एक सही उत्तर है।
ब्रोंसन डे

5

मेरा भी यही मुद्दा था और आज सुबह भी मुझे यह पोस्ट मिला। मैं के साथ काढ़ा अद्यतन करके समस्या को ठीक किया brew updateऔर फिर git के साथ पुनः स्थापित किया brew reinstall git

मुझे तब एक और फ़ाइल के बारे में सूचित किया गया था जो होमब्रेव लिंकिंग प्रक्रिया को रोक रही थी, मेरे मामले में यह थी /usr/local/share/zsh/site-functions/git-completion.bash। फ़ाइल को हटाने और चलाने brew link gitसे समस्या हल हो गई। लगता है कि यह सिर्फ एक बुरा नुस्खा संस्करण था जिस पर हम लड़खड़ा गए।


1
आपके द्वारा उपयोग किए जा रहे git का संस्करण भी आपको दिखाई देगा और यह Homebrew द्वारा स्थापित संस्करण नहीं है। कम से कम मेरे मामले में मैंने किया। आप के साथ संस्करण की जाँच कर सकते हैंgit --version
जोनाथन Knapp

नहीं। वह अभी भी मेरे लिए काम नहीं करता है। मैंने हमेशा OSX के गिट का उपयोग करने के लिए वापस पा लिया है, जो पूरा होने के लिए जाने के लिए बहुत बड़ी सुविधा है।
user137369

मैवरिक्स को अपडेट करने के बाद git-complete ने मेरे लिए काम करना बंद कर दिया। मुझे इसे फिर से काम करने के लिए brew reinstall gitभी brew reinstall bash-completionकरना पड़ा ।
क्रेसीमिर नीस्क

3

यदि आपके पास $BASH_VERSION<4.1 है, 3.2.57(1)-releaseतो इसके साथ आगे बढ़ें:

brew install bash-completion
# In ~/.bash_profile :
if [ -f $(brew --prefix)/etc/bash_completion ]; then
    . $(brew --prefix)/etc/bash_completion
fi

हालाँकि, यदि आपको brew install bashसंस्करण प्राप्त करना है तो आप 4.4.12(1)-release इसमें बेहतर और अधिक संपूर्ण पूर्णताओं का उपयोग कर सकते हैं:

brew install bash-completion@2
# In ~/.bash_profile:
[ -f "$(brew --prefix)/share/bash-completion/bash_completion" ] \
&& . "$(brew --prefix)/share/bash-completion/bash_completion"

ध्यान दें कि कुछ पैकेज (काढ़ा, डोकर, टीएमएक्स) अभी भी कुछ पूर्णताएँ डालेंगे $(brew --prefix)/etc/bash_completion.d/ताकि आप जोड़ सकें:

for completion in "$(brew --prefix)/etc/bash_completion.d/"*
do
    . $completion
done

अंत में आपको git पूरा करने की स्क्रिप्ट को जोड़ने में सक्षम होना चाहिए यदि किसी कारण से जिस तरह से आपने git को स्थापित किया है वह इसे उन दोनों में से किसी में नहीं जोड़े:

[[ -f $(brew --prefix)/etc/bash_completion.d/git \
|| -f $(brew --prefix)/share/bash-completion/completions/git ]] \
|| curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash \
    -o $(brew --prefix)/etc/bash_completion.d/git

आप इसे ऊपर के साथ प्राप्त और जोड़ सकते हैं।


2

चरण 1: स्वतः पूर्ण स्क्रिप्ट डाउनलोड करें:

cd ~
curl -O https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash

चरण 2: अपडेट .bash_profile और .bashrc

echo "source ~/git-completion.bash" >> .bash_profile

Via https://www.anintegratedworld.com/git-tab-autocomplete-on-osx-10-11-el-capan/

यदि ऊपर काम नहीं करता है, तो https://github.com/bobthecow/git-flow-completion/wiki/Install-Bash-git-completion आज़माएँ


1

मेरे लिए, मुझे लगाना था

source $(brew --prefix)/etc/bash_completion

इसे .bashrcकाम करने के लिए (.bash_profile) में नहीं।

".bash_profile लॉगिन गोले के लिए निष्पादित किया जाता है, जबकि .bashrc इंटरैक्टिव गैर-लॉगिन गोले के लिए निष्पादित किया जाता है" - .bash_profile और .bashrc के बीच क्या अंतर है? यह मुझे प्रतीत होता है कि MacOS Sierra .bash_profileनई टर्मिनल विंडो खोलते समय निष्पादित नहीं होती है .bashrc

मैं इसे _bash_profile में नहीं डालूंगा, क्योंकि फिर मुझे प्रभावी होने के लिए अपडेट के लिए रिबूट / लॉगआउट करना होगा।


1

यह मेरे लिए Mojave (OSX 10.14.1) में काम किया:

brew install bash-completion

फिर निम्नलिखित लाइन को अपने ~ / .bash_profile में जोड़ें:

[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion

यह सिर्फ चेतावनी की संख्या को बढ़ाता है
हुसैन अकरम

1

2019 में, बैश v5 का उपयोग करते हुए, आपको स्पष्ट रूप से आपके .bash_profileया में git bash पूर्ण स्क्रिप्ट को स्रोत करने की आवश्यकता नहीं है.bashrc

  1. सुनिश्चित करें कि आपके पास निम्नलिखित दो लाइनें हैं .bashrc
export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"
  1. Git bash पूर्ण स्क्रिप्ट डाउनलोड करें (https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash ) और इसे इस /usr/local/etc/bash_completion.d/रूप में सहेजेंgit

बस! बैश स्वचालित रूप से गिट पूर्णता फ़ाइल उठाएगा और पूर्णता को सक्षम करेगा।


साइड नोट: मैं इन सभी परिवर्तनों को डालने की सलाह देता हूं .bashrcक्योंकि यह सुनिश्चित करता है कि जब आप एक इंटरैक्टिव शेल (यानी। pipenv shell) से गिरते हैं, तो बैश स्रोत .bashrcऔर नहीं के रूप में पूर्णता सही ढंग से लोड हो जाएगी .bash_profile


0

यह शेर में रीडलाइन के बजाय उपयोग किए जा रहे libedit के साथ कुछ करने के लिए हो सकता है।

गिट से पहले रीडलाइन स्थापित करने का प्रयास करें।

brew install readline

0

उन लोगों के लिए जिनके पास पहले से ही शराब बनाने की मशीन है। मेरे पास git पूर्ण स्क्रिप्ट स्थापित नहीं थी और उसके लिए कोई टैप नहीं मिला।

इसलिए मैंने इसे मैन्युअल रूप से जोड़ा:

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o $(brew --prefix)/etc/bash_completion.d/git

ध्यान दें कि आपको फ़ाइल का नाम बदलना होगा और इसके लिए एक्सटेंशन को काम करना होगा।

यदि आपके पास पूरा या गिट स्थापित नहीं है, तो इसे स्वीकृत उत्तर में स्थापित करें।

brew install git bash-completion


0

यदि आपने git को स्थापित करने के लिए homebrew का उपयोग किया है, तो शायद git पूर्णता का समर्थन करने के लिए कुछ भी स्थापित करने की आवश्यकता नहीं है। "git-complete.bash" फ़ाइल कहीं है (मेरा यहाँ था: /usr/local/git/contrib/completion/git-completion.bash)

आपको बस फ़ाइल ढूंढने की ज़रूरत है: sudo find / -type f -name "git-complete.bash"

फिर अपने .bash_profile में इसका पथ स्रोत। उदाहरण के लिए मुझे इस लाइन को अपने ~ / .bash_profile में जोड़ने की आवश्यकता थी:

source /usr/local/git/contrib/completion/git-completion.bash

अपने ~ / .bash_profile स्रोत या अपने टर्मिनल को फिर से खोलने के लिए मत भूलना;)

से: कैसे-सक्षम-गिट-टैब-समापन-बैश-मैक-ओएस-एक्स


@ user137369 यह करता है - क्योंकि यहां आपको पहले से स्थापित सामान को स्थापित करने की आवश्यकता नहीं है ...
दोज़न हिग्स

0

मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन आपको वास्तव में किसी भी अतिरिक्त पैकेज को स्थापित करने की आवश्यकता नहीं है।

Homebrew आपको सूचित कर रहा है कि आपकी ज़रूरत के सभी सामानों के साथ एक निर्देशिका है।

.bash_profileयदि आप बैश का उपयोग कर रहे हैं तो आप बस निम्नलिखित पंक्ति जोड़ सकते हैं:

source /usr/local/etc/bash_completion.d/git-completion.bash

-1

MAC-OS Mojave 10.14 पर GIT कमांड के ऑटो कम्पलीशन को सक्षम करें मैं एक डेवलपर हूं और सभी समय कमांड लाइन से GIT का उपयोग करता हूं। जब मैं विकास के दृष्टिकोण पर विचार करता हूं, तो मैं जीआईटी ऑपरेशन के लिए कमांड लाइन का उपयोग करके बहुत सारी कमांड निष्पादित करता था। ज्यादातर समय यह बहुत कष्टप्रद होता है कि मैक ओएस में कमांड पूरा होने के लिए स्वचालित समर्थन नहीं होता है, जिसे मैं आंशिक रूप से समर्थन करता हूं। साथ ही कमांड के सुझाव, जिसका अर्थ है कि टाइप किए गए वर्णों के लिए उपलब्ध कमांड क्या हैं। इसलिए बहुत लंबी कमांड टाइप करना बहुत ही तकलीफदेह होता है और ज्यादातर दोहराव वाला काम होता है क्योंकि टाइपो गलत हो रहा है। :(

टैब समापन निश्चित रूप से तेज और आसान होगा। दुर्भाग्य से, कुछ मैक कंप्यूटरों पर git की डिफ़ॉल्ट स्थापना में टैब पूर्णता सक्षम नहीं है।

ताकि मैं समस्या के लिए एक खोज कर रहा था और वेब खोज से कई समाधान मिल गए हैं जैसे कि स्टैकऑवरफ्लो, गीथहब और साथ ही माध्यम से। दुर्भाग्य से, उन समाधानों ने मेरे लिए काम नहीं किया और कई बार विभिन्न समाधानों की कोशिश करने से निराश हो गए।

मैं गहराई से खोज रहा था और अलग-अलग समाधानों की कोशिश कर रहा था और सौभाग्य से, यह एक आसान समाधान है। नीचे मैंने कई पदों से एकत्रित किए गए कदमों के बारे में बताया है और अंत में यह उम्मीद के मुताबिक काम किया है। इसलिए मैं उन अन्य लोगों के साथ साझा करने की उम्मीद करता हूं जिनके पास मेरी जैसी समस्या है।

च आप वेब खोज पर जाते हैं और आप कई समाधान पा सकते हैं, जिसमें गिट पूरा होने की फाइल का उल्लेख किया गया था। यहां तक ​​कि गिटहब गाइड भी। लेकिन मैं आपको पहले सुझाव देता हूं कि अगर git-core.bash फ़ाइल आपके मैक कंप्यूटर में पहले से ही git-core या कुछ और है जो इंस्टॉलेशन से आया है। आप नीचे कमांड का उपयोग कर सकते हैं।

sudo find / -type f -name "git-completion.bash"

आपको नीचे परिणाम मिलेंगे। (सामग्री के अनुसार कुछ अंतर हो सकता है)

/Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
/Users/Dilanka/git-completion.bash
/Users/Dilanka/.oh-my-zsh/plugins/gitfast/git-completion.bash
/Users/Dilanka/Downloads/git-completion.bash

मैं आपको सुझाव देता हूं कि आपको कौन सा गिट-कोर से स्थापित करना है

यदि आपकी मशीन पर गिट-कम्प्लीटिंग.बैश स्क्रिप्ट मौजूद नहीं है, तो कृपया इसे ऊपर दिए गए नीचे से प्राप्त करें और इसे अपने स्थानीय मशीन में एक नई फाइल में सेव करें जिसे git-complete.bash in / usr / local / etc / कहा जाता है। bash_completion.d / निर्देशिका।

https://git-scm.com/book/en/v1/Git-Basics-Tips-and-Tricks

यदि आप बैश शेल का उपयोग करते हैं, तो गिट एक अच्छा ऑटो-पूर्ण स्क्रिप्ट के साथ आता है जिसे आप सक्षम कर सकते हैं। इसे सीधे Git स्रोत कोड से डाउनलोड करें

https://github.com/git/git/blob/master/contrib/completion/git-completion.bash

यदि आपकी मशीन पर git-complete.bash स्क्रिप्ट मौजूद है, लेकिन /usr/local/etc/bash_completion.d/ निर्देशिका में नहीं है, तो आपको वह निर्देशिका बनानी चाहिए और फ़ाइल को उसमें कॉपी करना चाहिए। नीचे कमांड काम करेगा:

sudo mkdir /opt/local/etc/bash_completion.d
sudo cp /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash

ऊपर के पूरा होने के बाद। Git-complete.bash स्क्रिप्ट आपके स्थानीय मशीन पर / usr / लोकल / etc / bash_completion.d / निर्देशिका में मौजूद होनी चाहिए।

अब आपको कमांड के नीचे अपनी प्रोफाइल को रिफ्रेश करना होगा। यह टर्मिनल संदर्भ में आपकी जोड़ी गई बैश फ़ाइल को लोड करेगा।

source ~/.bash_profile

महान!!! आपने इसे किया है। बस टर्मिनल विंडो शुरू करें और इसे आज़माएं। "Git sta" टाइप करें, यह नीचे दिए गए सुझावों को दिखाएगा:

git sta
stage    stash    status
git chec<TAB> will show git checkout

यहाँ मेरी GitHub पोस्ट देखें:

https://github.com/DIL8654/Enable-Auto-Completion-of-GIT-commads-on-MAC-OS-Mojave

मेरी मध्यम पोस्ट यहाँ देखें:

https://medium.com/@dilanka85/enable-auto-completion-of-git-commands-on-mac-os-mojave-10-14

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