it-swarm.asia

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

git-completion.bash'ma /opt/local/etc/bash_completion.d/git-completion eklemek için http://blog.bitfluent.com/post/27983389/git-utilities-you-cant-live-without 'u takip ettim.

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

Ama şimdi bu -bash: __git_ps1: command not found her şeyi alıyorum, cd.

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

91
n179911

Git yeni Snow Leopard kurulumuma MacPorts kullanarak yükledim. 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 Kabuğu 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 Kabuğu komutunun tamamlanması 
 İf [-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, sorunun bu olup olmadığını görmek için echo $BASH_VERSION dosyasını deneyin. Öyleyse, bashyazarak MacPorts bash yazın ve git işlemini tekrar deneyin.

65
Lara Dougan

Git'i homebrew kullanarak yüklediyseniz, MacPorts tavsiyesini biraz ayarlayabilir ve bunu .bash_profile ve .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 İstemi 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
55
grundprinzip

Yapmanız gereken tek şey git-completion.bash dosyasını kullanıcı ana sayfa bin dizinine yerleştirin ve aşağıdakileri .profile veya .bash_profile dosyasına yerleştirin:

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

Bunun yaptığı şey, yerel çöp kutunuzun PATH içinde olduğundan ve source komutunun işlerin başladığından emin olmaktır. Ardından PS1 değişikliği, şu anda kullanıma alınmış şubeyi İstem'e koyar.

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

26
iansheridan

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

Geçerli 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 Terminal /bin/bash kullanır, sadece 3.x alır. MacPorts belgelerinde açıklandığı gibi /opt/local/bin/bash -l işlevini kullanmanız için terminal ayarlarınızı değiştirmeniz gerekir: http://trac.macports.org/wiki/howto/bash-completion

13
Andy

Komut tamamlama işlevlerini kaynaklamanız gerekir. PS1'den önce .bashrc_profile dosyasına ekleyin:

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

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 yalnızca İstemci işlevine sahip olmalarını sağlamak için (bu, işleri yavaşlatabilir), İstemci işlevini bash_completion/git'in dışına ve git-Prompt.sh dosyasının kendi dosyasına dönüştürdü.

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

__git_ps1 öğesini almak için, PS1 İsteminizde 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

5
studgeek

Veya Homebrew ile

brew install bash-completion git-extras
3
derek73

Benzer bir soru için bir çözüm buldum :

git-osx-installergit-completion.bash ile birlikte gelir ve /usr/local/git/contrib/completion/ öğesine yükler. .bash_profile dosyasını almak için o dosyayı __git_ps1 adresinden kaynaklayın.

2
John Mellor

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
2
haysclark

Ben demlemek kullanıyorum, bu yüzden bash_completion içindeki hepsini çalıştıran bir ana bash_completion.d betiği sunulmuyor gibi 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 bunu (Arch Linux'tan uyarlanmış) /etc/bashrc sonuna ekledim:

# 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

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

Bunu sadece .bashrc'nize ekleyin:

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

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
thekingoftruth

2011'deki grundprinzip tarafından verilen cevap hala iyi çalışsa da, şimdi bir Homebrew paketi olduğuna dair daha yeni bir cevap eklemek istedim bash-tamamlama ( formula , repo ) bu daha da kolaylaştırır. (Bu, git gibi diğer ortak araçların tamamlanmasını da içerir.)

Bugün macOS Bash 3 ile birlikte gelir, ancak Bash 4'ü almak için brew install bash komutunu kullanabilirsiniz. Bash 4 kullanıyorsanız, bash-tamamlamanın daha yeni 2.x dalını kurun.

Bash 4

  1. Koşmak:

    brew install [email protected]
    
  2. ~/.bash_profile 'a ekle:

    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. Koşmak:

    brew install bash-completion
    
  2. ~/.bash_profile 'a ekle:

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

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

0
Taylor Edmiston