it-swarm.asia

Bagaimana cara mendapatkan git-completion.bash agar dapat bekerja di Mac OS X?

Saya telah mengikuti http://blog.bitfluent.com/post/27983389/git-utilities-you-cant-live-without untuk menambahkan git-completion.bash ke /opt/local/etc/bash_completion.d/git-completion saya

dan saya menaruh PS1='\h:\W$(__git_ps1 "(%s)") \u\$ ' di .bashrc_profile saya

Tapi sekarang saya mendapatkan -bash: __git_ps1: command not found ini semua yang saya lakukan cd.

Bisakah Anda memberi tahu saya apa yang saya lewatkan?

91
n179911

Saya menginstal git menggunakan MacPorts pada instalasi Snow Leopard baru saya. Setelah MacPorts diinstal dari gambar .dmg, ini akan menjadi perintah di Terminal.app:

Sudo port selfupdate
Sudo port install git-core +bash_completion

Jika Anda juga ingin dukungan untuk menarik dari repositori dan dokumen SVN, gunakan ini sebagai ganti dari baris kedua:

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

Kemudian tambahkan berikut ini ke ~/.profile atau ~/.bash_profile Anda:

# MacPorts Bash Shell menyelesaikan perintah 
 Jika [-f/opt/local/etc/bash_completion]; kemudian
    . /opt/local/etc/bash_completion[.____.[fi

atau untuk MacPorts sejak versi 2.1.2 di Mountain Lion:

# MacPorts Bash Shell menyelesaikan perintah 
 Jika [-f /opt/local/etc/profile.d/bash_completion.sh]; kemudian
  . /opt/local/etc/profile.d/bash_completion.sh[.____.[fi

atau untuk MacPorts dengan versi git yang lebih baru:

jika [-f /opt/local/share/git-core/git-Prompt.sh]; kemudian
    . /opt/local/share/git-core/git-Prompt.sh[.____.[fi

Catatan: bash 4.1 atau lebih tinggi diperlukan oleh bash_completion.sh. Jika penyelesaian tidak berhasil coba echo $BASH_VERSION untuk melihat apakah itu masalahnya. Jika demikian, masukkan bash MacPorts dengan mengetik bash dan coba git penyelesaian lagi.

65
Lara Dougan

Jika Anda menginstal git menggunakan homebrew, Anda mungkin sedikit menyesuaikan saran MacPorts dan menambahkannya ke .bash_profile dan .bashrc

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

Cara terbaik untuk memeriksa apakah Anda telah menginstal git dengan benar menggunakan ist homebrew untuk dieksekusi

brew info git

dan periksa output untuk direktori instal penyelesaian git bash

Versi terbaru dari Git (1.7.12) juga mengharuskan yang berikut ini untuk mengaktifkan Prompt.

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

Yang perlu Anda lakukan adalah menempatkan file git-completion.bash di direktori home user bin Anda dan menempatkan yang berikut di dalam file .profile atau .bash_profile Anda:

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

Apa yang dilakukan adalah memastikan bahwa nampan lokal Anda ada di PATH dan perintah source dapat berfungsi. Maka tentu saja perubahan PS1 menempatkan cabang yang saat ini diperiksa di Prompt.

Jadi, tidak ada MacPort yang diinstal untuk menginstal versi GIT "penyelesaian" (terutama yang menjengkelkan jika Anda telah menginstalnya).

26
iansheridan

Sementara jawaban saat ini benar untuk MacPorts lama, ada masalah baru dengan MacPorts terbaru menghasilkan kesalahan yang sama.

Paket saat ini penyelesaian bash (2.0 r1) membutuhkan setidaknya bash 4.1 untuk berfungsi dengan baik. Seperti biasa OS X Terminal menggunakan /bin/bash hanya mendapat 3.x. Anda harus mengubah pengaturan terminal untuk menggunakan /opt/local/bin/bash -l seperti yang dijelaskan dalam dokumentasi MacPorts di sini: http://trac.macports.org/wiki/howto/bash-completion

13
Andy

Anda perlu sumber fungsi penyelesaian perintah. Tambahkan ke .bashrc_profile Anda sebelum PS1:

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

Mengganggu ini telah rusak lagi. Kali ini dengan orang-orang git dengan versi 1.7.12-1. Untuk memungkinkan orang memiliki fungsionalitas Prompt tanpa fungsi penyelesaian (yang dapat memperlambat segalanya), mereka refactored fungsionalitas Prompt dari bash_completion/git dan ke dalam file git-Prompt.sh miliknya sendiri.

Jadi menambahkan bash_completion seperti yang dijelaskan oleh @Lara hanya akan membuat Anda selesai (tab memukul melengkapi tag/nama cabang).

Untuk mendapatkan __git_ps1 sehingga Anda dapat menggunakannya di Prompt PS1 Anda, Anda juga perlu menambahkan yang berikut ke ~ ~ .profile Anda.

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

Beberapa latar belakang ada di sini - https://bbs.archlinux.org/viewtopic.php?pid=1163632#p1163632

5
studgeek

Atau dengan Homebrew

brew install bash-completion git-extras
3
derek73

Menemukan solusi pada pertanyaan serupa :

git-osx-installer hadir dengan git-completion.bash dan memasangnya ke /usr/local/git/contrib/completion/. Sumber saja file itu dari .bash_profile Anda untuk mendapatkan __git_ps1.

2
John Mellor

Untuk Mountain Lion dan Mac-Ports saya perlu menggunakan baris berikut di .bash_profile untuk mendapatkan __git_ps1 dan pelengkap agar berjalan normal:

# 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

Saya menggunakan minuman, jadi skrip master bash_completion yang menjalankan semua yang ada di bash_completion.d tampaknya tidak disediakan. Solusi yang mengusulkan hanya menjalankan satu skrip untuk menambahkan penyelesaian git tidak dapat diperpanjang, karena paket yang berbeda akan menambahkan skrip penyelesaian yang berbeda, dan Anda mungkin ingin menjalankan semuanya. Karena itu saya menambahkan ini (diadaptasi dari Arch Linux) ke akhir /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

Setidaknya dengan Xcode 6, Anda sudah memiliki git-completion.bash. Itu ada di dalam bundel aplikasi Xcode.

Cukup tambahkan ini ke .bashrc Anda:

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

Selain posting Adam K. Johnson

Anda juga dapat menempatkan yang berikut ...

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

... di/etc/profile Anda, jika Anda mau.

Dengan cara itu semua pengguna pada sistem akan mendapat manfaat dari setiap skrip penyelesaian bash yang dipasang di direktori "/opt/local/etc/bash_completion.d/".

0
thekingoftruth

Sementara jawaban di atas oleh grundprinzip dari 2011 masih berfungsi dengan baik, saya ingin menambahkan jawaban yang lebih baru sekarang bahwa sekarang ada paket Homebrew penyelesaian-bash ( rumus , repo ) yang membuat ini lebih mudah. (Ini termasuk penyelesaian untuk git serta alat umum lainnya.)

Hari ini macOS dikirimkan dengan Bash 3, tetapi Anda dapat brew install bash untuk mendapatkan Bash 4. Jika Anda menjalankan Bash 4, maka instal cabang 2.x yang lebih baru dari penyelesaian bash.

Bash 4

  1. Menjalankan:

    brew install [email protected]
    
  2. Tambahkan ke ~/.bash_profile:

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

Bash 3

Jika Anda ingin tetap menggunakan stock bash 3.x di macOS, ikuti petunjuk ini sebagai gantinya.

  1. Menjalankan:

    brew install bash-completion
    
  2. Tambahkan ke ~/.bash_profile:

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

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

0
Taylor Edmiston