it-swarm.asia

كيفية الحصول على git-complet.bash للعمل على نظام Mac OS X؟

لقد تابعت 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.

هل يمكن أن تخبرني ما الذي أفتقده؟

91
n179911

لقد قمت بتثبيت git باستخدام MacPorts على تثبيت Snow Leopard الجديد. بعد تثبيت 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 Bash Shell 
 إذا [-f/opt/local/etc/bash_completion] ؛ ثم
    . /opt/local/etc/bash_completion
fi

أو بالنسبة إلى MacPorts منذ الإصدار 2.1.2 على Mountain Lion:

# إكمال أمر MacPorts Bash Shell 
 إذا [-f /opt/local/etc/profile.d/bash_completion.sh] ؛ ثم
  . /opt/local/etc/profile.d/bash_completion.sh
fi

أو بالنسبة إلى MacPorts ذات الإصدارات الأحدث من git:

إذا [-f /opt/local/share/git-core/git-Prompt.sh] ؛ ثم
    . /opt/local/share/git-core/git-Prompt.sh
fi

ملاحظة: bash 4.1 أو أعلى مطلوب بواسطة bash_completion.sh. إذا لم تنجح عملية الإكمال ، فحاول echo $BASH_VERSION لمعرفة ما إذا كانت هذه هي المشكلة. إذا كان الأمر كذلك ، فأدخل bash MacPorts بكتابة bash وحاول إكمال git مرة أخرى.

65
Lara Dougan

إذا قمت بتثبيت git باستخدام homebrew مما قد تضبط نصيحة MacPorts قليلاً وأضفها إلى .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

أفضل طريقة للتحقق مما إذا كنت قد قمت بتثبيت git بشكل صحيح باستخدام homebrew ist للتنفيذ

brew info git

وتحقق من الإخراج للحصول على دليل التثبيت لإكمال bash 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
55
grundprinzip

كل ما عليك فعله هو وضع ملف git-completion.bash في دليل المستخدم bin الخاص بالمستخدم ووضع ما يلي في ملف .profile أو .bash_profile:

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

ما يفعله هذا هو التأكد من أن صندوقك المحلي في PATH وأن الأمر source يعمل على سير الأمور. ثم بطبيعة الحال ، فإن تغيير PS1 يضع فرع السحب الحالي في الموجه.

لذلك ، لا تثبيت MacPort ثم تثبيت إصدار "إكمال" من GIT (خاصةً إذا كان لديك بالفعل تثبيته).

26
iansheridan

على الرغم من أن الإجابة الحالية صحيحة بالنسبة لـ MacPorts الأقدم ، إلا أن هناك مشكلة جديدة حيث تؤدي MacPorts الأكثر حداثة إلى حدوث نفس الخطأ.

تتطلب الحزمة الحالية bash-complet (2.0 r1) على الأقل bash 4.1 للعمل بشكل صحيح. كما يستخدم OS X Terminal المعتاد /bin/bash فإنه يحصل فقط على 3.x. يجب عليك تغيير إعداداتك الطرفية لاستخدام /opt/local/bin/bash -l كما هو موضح في وثائق MacPorts هنا: http://trac.macports.org/wiki/howto/bash-completion

13
Andy

تحتاج إلى مصدر وظائف إكمال الأوامر. أضف إلى .bashrc_profile قبل PS1:

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

مزعج وقد تم كسر هذا مرة أخرى. هذه المرة في بوابة الناس مع الإصدار 1.7.12-1. للسماح للأشخاص بالحصول على وظيفة Prompt فقط دون وظيفة الإكمال (التي يمكن أن تؤدي إلى إبطاء الأمور) ، قاموا بإعادة تشكيل وظيفة Prompt خارج نطاق bash_completion/git وفي ملفه git-Prompt.sh الخاص به.

لذا ، فإن إضافة bash_completion كما هو موضح بواسطةLara لن يؤدي إلا إلى إتمامك (ضرب علامة تبويب إكمال أسماء العلامات/الفروع).

للحصول على __git_ps1 حتى تتمكن من استخدامه في موجه PS1 ، تحتاج أيضًا إلى إضافة ما يلي إلى ملف التعريف ~/.profile الخاص بك.

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

بعض الخلفية موجودة هنا - https://bbs.archlinux.org/viewtopic.php؟pid=1163632#p1163632

5
studgeek

أو مع البيرة

brew install bash-completion git-extras
3
derek73

وجدت حلاً على سؤال مماثل :

المثبت git-osx-installer يأتي مع git-completion.bash ويثبته على /usr/local/git/contrib/completion/. فقط مصدر هذا الملف من .bash_profile الخاص بك للحصول على __git_ps1.

2
John Mellor

بالنسبة إلى Mountain Lion و Mac-Ports ، كنت بحاجة إلى استخدام الأسطر التالية في ملفي .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
2
haysclark

أستخدم brew ، لذلك يبدو أنه لم يتم توفير برنامج نصي bash_completion رئيسي والذي يعمل على تشغيل كل تلك الموجودة في bash_completion.d. الحلول التي تقترح مجرد تشغيل برنامج نصي واحد لإضافة عمليات إكمال git ليست قابلة للتوسيع ، لأن الحزم المختلفة ستضيف نصوص مختلفة لإكمال التنفيذ ، وربما تريد تشغيلها جميعًا. لذلك أضفت هذا (مقتبس من Arch Linux) إلى نهاية /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
ecloud

على الأقل مع Xcode 6 ، لديك بالفعل git-completion.bash. إنه داخل حزمة تطبيق Xcode.

فقط أضف هذا إلى .bashrc:

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

بالإضافة إلى مشاركة آدم جونسون

يمكنك أيضا وضع ما يلي ...

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

... في ملف/etc/profile ، إذا كنت تريد.

وبهذه الطريقة ، سيستفيد جميع المستخدمين على النظام من أي برامج نصية لإكمال bash مثبتة في الدليل "/opt/local/etc/bash_completion.d/".

0
thekingoftruth

على الرغم من أن الإجابة الواردة أعلاه من قبل grundprinzip من عام 2011 لا تزال تعمل بشكل جيد ، فقد أردت إضافة إجابة أكثر حداثة الآن أن هناك الآن حزمة Homebrew bash-complet ( الصيغة ، repo ) التي تجعل هذا أسهل. (وهذا يشمل الانتهاء من بوابة وكذلك الأدوات الشائعة الأخرى.)

يتم شحن macOS اليوم مع Bash 3 ، لكن يمكنك brew install bash للحصول على Bash 4. إذا كنت تقوم بتشغيل Bash 4 ، فقم بتثبيت الفرع 2.x الأحدث من bash-complet.

باش 4

  1. يركض:

    brew install [email protected]
    
  2. أضف إلى ~/.bash_profile:

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

باش 3

إذا كنت تريد التمسك بـ bash 3.x على نظام macOS ، فاتبع هذه التوجيهات بدلاً من ذلك.

  1. يركض:

    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/

0
Taylor Edmiston