Git-completeion.bash'ın Mac OS X'de çalışması nasıl sağlanır?


92

Ben takip ettim http://blog.bitfluent.com/post/27983389/git-utilities-you-cant-live-without eklemek git-completion.bashiçin benim/opt/local/etc/bash_completion.d/git-completion

ve PS1='\h:\W$(__git_ps1 "(%s)") \u\$ '.bashrc_profile

Ama şimdi bunu, yaptığım -bash: __git_ps1: command not foundher şeyi alıyorum cd.

Bana ne kaçırdığımı söyler misin lütfen?


Yanıtlar:


65

Yeni Snow Leopard kurulumumda MacPorts kullanarak git'i kurdum . MacPorts .dmg görüntüsünden yüklendikten sonra, bunlar Terminal.app'deki komutlardır:

sudo port selfupdate
sudo port install git-core +bash_completion

Ayrıca SVN depolarından ve dokümanlardan bilgi almak için destek almak istiyorsanız, ikinci satır yerine bunu kullanın:

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

Ardından ~ / .profile veya ~ / .bash_profile dosyasına aşağıdakileri ekleyin:

# MacPorts Bash kabuk komutunun tamamlanması
eğer [-f / opt / local / etc / bash_completion]; sonra
    . / Opt / local / etc / bash_completion
fi

veya Mountain Lion'daki 2.1.2 sürümünden bu yana MacPorts için:

# MacPorts Bash kabuk komutunun tamamlanması
eğer [-f /opt/local/etc/profile.d/bash_completion.sh]; sonra
  . /opt/local/etc/profile.d/bash_completion.sh
fi

veya daha yeni git sürümlerine sahip MacPorts için:

eğer [-f /opt/local/share/git-core/git-prompt.sh]; sonra
    . /opt/local/share/git-core/git-prompt.sh
fi

Not: bash_completion.sh tarafından bash 4.1 veya daha üstü gerekir. Tamamlama işe yaramazsa echo $BASH_VERSION, sorunun bu olup olmadığını görmeye çalışın . Eğer öyleyse, yazarak MacPorts bash yazın bashve git işlemini tekrar deneyin.


Yapıştırılan kopyayı kopyaladım ve hala OP'nin hatayı alıyorum. = \. Neyin dahil olduğunu nasıl söylersin? Bash_completion kaynaklı değil
NullVoxPopuli

git / macport / bash-tamamlamanın daha yeni sürümlerinde bilgi istemi farklı bir dosyada. Bakınız: 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
Çünkü /opt/local/etc/profile.d/bash_completion.shihtiyaçlar $BASH_VERSION4.1 veya daha iyi, ben MacPorts 2.1.3 ile Mac OS X 10.8.3 aşağıdaki yapmak zorunda: kendi varsayılan Mac OS X giriş kabuğu geçin /bin/bash(3.2.48 (1) -salınımı) MacPorts için /opt/local/bin/bash(4.2 .42 (2) - yayınlayın) burada açıklandığı gibi: stackoverflow.com/a/791244/287984. Temel olarakif [ `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
Uwe Günther

Benim için harika çalıştı. /bin/bashTerminal.app'de /opt/local/bin/bashmacports + ile .bash_profileburada önerilen tüm değişiklikleri değiştirmek zorunda kaldım .
bgs

1
Bash 4.1 veya üstü sürümlere geçmek için buradaki talimatları uygulayabilirsiniz
ThomasW

55

Git'i homebrew kullanarak yüklediyseniz, MacPorts'un tavsiyesini biraz ayarlayabilir .bash_profileve bunu.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 kullanarak doğru yüklenip yüklenmediğini kontrol etmenin en iyi yolu

brew info git

ve git bash tamamlamanın kurulum dizini için çıktıyı kontrol edin.

Git'in son sürümü (1.7.12) de istemi etkinleştirmek için aşağıdakileri gerektirir.

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

Daha fazla bilgi için __git_ps1, bu yığındaki superuser.com/a/477749/90231 yanıtına bakın .
RichVel

26

Tek yapmanız gereken git-completion.bashdosyayı kullanıcı ana bindizininize koymak ve aşağıdakileri içine .profileya da .bash_profiledosyaya koymak :

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

Bunun yaptığı şey, yerel çöp kutusunun PATH içinde olduğundan ve sourcekomutun yoluna girdiğinden emin olmaktır . Tabii ki PS1 değişikliği şu anda kullanıma alınmış şubeyi bilgi istemine dahil ediyor.

Bu nedenle, GIT'nin "tamamlama" versiyonunu yüklemek için hiçbir MacPort kurulumu yapılmaz (özellikle kurulu ise tahriş edicidir).



1
Bu PS1 olayını isteklerinizde renkler ile nasıl birleştireceğinizi merak edenlere bakın: stackoverflow.com/questions/816790/…
Nickolay

1
Daha doğrusu, git-completeion.bash'ın sizin yerinizde bir yerde olması gerekir $PATH. Madeni yerleştirmeye karar verdim, /usr/local/bin/böylece var olanı değiştirmek zorunda kalmayacağım $PATH.
metavida

13

Mevcut cevap eski MacPorts için doğru olsa da, aynı hatayla sonuçlanan en güncel MacPorts ile ilgili yeni bir sorun var.

Mevcut bash tamamlama paketi (2.0 r1) düzgün çalışması için en az bir bash 4.1 gerektirir. Her zamanki gibi bir OS X Terminali kullandığında /bin/bashsadece 3.x alır. /opt/local/bin/bash -lMacPorts'un belgelerinde açıklandığı şekilde kullanmak için terminal ayarlarınızı değiştirmeniz gerekir : http://trac.macports.org/wiki/howto/bash-completion


Bu sadece macport'ları güncelledikten sonra sorun yaşamaya başladığım için en doğru cevap. Macports bash'ı terminalden kullanmanın tek dezavantajı, terminal penceremi kapatmaya çalıştığımda şimdi çalışan işlemleri sonlandırma konusunda uyarmamı sağlıyor - buna girdiniz mi?
vitch


5

Can sıkıcı bir şekilde, bu yine kırıldı. Bu sefer onun git 1.7.12-1 sürümü ile millet. İnsanların tamamlama işlevi olmadan sadece hızlı işlevsellik elde etmelerine izin vermek için (işleri yavaşlatabilir), istemi işlevselliklerini bash_completion / git'in dışına ve git-prompt.sh dosyasının içine yeniden yerleştirdiler.

Yani bash_completion @Lara tarafından tanımlandığı şekilde eklemek, sadece tamamlamanızı sağlar (isabet sekmesi etiket / dal adlarını tamamlar).

Bunu almak __git_ps1için PS1 isteminizde kullanabilirsiniz, ayrıca ~ / .profile dosyasına aşağıdakileri de eklemeniz gerekir.

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

Bazı arka plan burada - https://bbs.archlinux.org/viewtopic.php?pid=1163632#p1163632



3

Veya Homebrew ile

brew install bash-completion git-extras

2
Çok teşekkürler. O olmalı brew install bash-completion git-extras(alt çizgi yerine çizgi) gerçi.
simonair


2

Mountain Lion ve Mac-Port'lar için .bash_profile dosyamda aşağıdaki satırları kullanmam gerekiyordu. Hem __git_ps1 hem de tamamlamaları normal şekilde çalışması için:

# 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

Demlemek kullanıyorum, bu yüzden bash_completionhepsini çalıştıran ana bir senaryo sunulmuyor bash_completion.dgibi görünüyor. Git tamamlamaları eklemek için yalnızca tek bir komut dosyası çalıştırmayı öneren çözümler genişletilemez, çünkü farklı paketler farklı tamamlama komut dosyaları ekler ve muhtemelen hepsini çalıştırmak istersiniz. Bu yüzden şunu ekledim (Arch Linux'tan uyarlanmış) /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

En azından Xcode 6 ile zaten sahipsin git-completion.bash. Xcode uygulama paketinin içinde.

Bunu sadece .bashrc'nize ekleyin:

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

Bu benim için gerçekten işe yarayan tek cevaptı. Diğer cevaplar, gibi bir eksik komut yazdığınızda garip hatalar üretiyordugit br<TAB>
r00m

0

Adam K. Johnson'ın gönderisine ek olarak

Ayrıca aşağıdakileri de koyabilirsiniz ...

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

... isterseniz, / etc / profilinizde.

Bu yolla sistemdeki tüm kullanıcılar "/opt/local/etc/bash_completion.d/" dizininde kurulu olan bash tamamlama komut dosyalarından faydalanacaktır.


0

2011'deki grundprinzip tarafından verilen cevap hala iyi çalışsa da, şimdi daha kolay bir cevap eklemek istedim, şimdi bunu daha da kolaylaştıran bir Homebrew paketi bash tamamlama işlemi ( formül , repo ) var. (Bu, git gibi diğer ortak araçların tamamlanmasını da içerir.)

Bugün macOS, Bash 3 ile birlikte gelir, ancak brew install bashBash 4'ü alabilirsiniz. Bash 4 kullanıyorsanız, bash tamamlamanın yeni 2.x dalını yükleyin.

Bash 4

  1. Çalıştırmak:

    brew install bash-completion@2
  2. Ekle ~/.bash_profile:

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

Bash 3

MacOS'ta hisse senedi bash 3.x ile yapıştırmak istiyorsanız, bunun yerine bu yönergeleri izleyin.

  1. Çalıştırmak:

    brew install bash-completion
  2. Ekle ~/.bash_profile:

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

Kaynak: http://davidalger.com/development/bash-completion-on-os-x-with-brew/


-2

Sanırım giriş sırasında dosyayı almayı unutursun .bashrc, şöyle bir şey ekleyebilirsin:

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

Kullanma .ardından bir boşluk geçerli bağlamda dosyayı çalıştırır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.