Bagaimana cara mengonfigurasi penyelesaian baris perintah git bash?

131

Misal pada mesin ubuntu baru, saya baru saja menjalankan sudo apt-get git, dan tidak ada penyelesaian saat mengetik mis git check[tab].

Saya tidak menemukan apa pun di http://git-scm.com/docs , tetapi penyelesaian IIRC sudah termasuk dalam paket git hari ini dan saya hanya perlu entri yang benar di bashrc saya.

Vincent Scheib
sumber
Bekerja untuk saya di luar kotak di Ubuntu Precise (dan Fedora 17).
Siput mekanik
2
Untuk memeriksa apakah Anda memilikinya secara default atau tidak, Anda dapat menjalankannya (cd ~ && exec cat .bashrc | grep completion).
aderchox

Jawaban:

183

Di Linux

pada kebanyakan distribusi, skrip penyelesaian git diinstal ke /etc/bash_completion.d/(atau /usr/share/bash-completion/completions/git) saat Anda menginstal git, tidak perlu membuka github. Anda hanya perlu menggunakannya - tambahkan baris ini ke .bashrc:

source /etc/bash_completion.d/git
# or
source /usr/share/bash-completion/completions/git

Di beberapa versi Ubuntu, git autocomplete mungkin rusak secara default, menginstal ulang dengan menjalankan perintah ini akan memperbaikinya:

sudo apt-get install git-core bash-completion

Di Mac

Anda dapat menginstal penyelesaian git menggunakan Homebrew atau MacPorts.

Homebrew

if $BASH_VERSION> 4: brew install bash-completion@2(versi terbaru) Berhati-hatilah dengan versi bash mana yang Anda miliki sebagai default MacOS dikirimkan dengan rilis 3.2.57 (1).

tambahkan ke .bash_profile:

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

Untuk versi bash yang lebih lama: brew install bash-completion

tambahkan ke .bash_profile:

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

MacPorts

sudo port install git +bash_completion

lalu tambahkan ini ke .bash_profile:

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

info lebih lanjut dalam panduan ini: Instal penyelesaian Bash git

Perhatikan bahwa dalam semua kasus Anda perlu membuat shell baru (buka tab / jendela terminal baru) agar perubahan diterapkan.

Sergey Evstifeev
sumber
1
Kebanyakan kotak * nix (terutama Ubuntu) sudah memiliki file itu, jadi sumbernya saja ke pengguna saya telah memperbaiki masalah saya. Terima kasih.
nevvermind
5
ubuntu mungkin memilikinya sebagai
/etc/bash_completion.d/git-prompt
2
Saya memiliki Git tetapi tidak
/etc/bash_completion.d
15
Di Ubuntu 14.04 saya, file ini adalah /usr/share/bash-completion/completions/git. /etc/bash_completion.d/git-promptdigunakan untuk dukungan cepat git, bukan untuk penyelesaian.
Ray Chen
18
PERINGATAN: Metode homebrew Mac hanya berfungsi jika Anda menginstal git melalui homebrew, brew uninstall bash-completionlalu brew install gitjika Anda telah menginstal git melalui beberapa metode lain sebelumnya, maka langkah-langkah di atas akan berhasil.
patapouf_ai
66

saya memiliki masalah yang sama, ikuti langkah-langkah di bawah ini:

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

kemudian tambahkan baris berikut ke Anda .bash_profile(biasanya di bawah folder rumah Anda)

if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
fi

sumber: http://code-worrier.com/blog/autocomplete-git/

jospratik
sumber
Saya berada di belakang proxy jadi saya harus mengatur proxy terlebih dahulu agar curl berfungsi. export https_proxy=proxy_ip:proxy_portSaya tidak terlalu mengerti mengapa tidak mendapatkan pengaturan dari sistem.
madlymad
2
Anda tidak perlu menyembunyikan file itu dengan titik di depan namanya. Juga: hati-hati dengan versi git (lihat jawaban dari wisbucky)
Walter Tross
42

Sebagian besar instruksi yang Anda lihat akan meminta Anda untuk mengunduh

https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash

dan sumber itu di skrip startup bash Anda seperti .bashrc.

Tetapi ada masalah dengan itu, karena ini mereferensikan mastercabang, yang merupakan versi terbaru dari git-completion.bash. Masalahnya adalah terkadang itu akan rusak karena tidak kompatibel dengan versi git yang Anda instal.

Nyatanya, saat ini hal itu akan rusak karena mastercabang git-completion.bashmemiliki fitur baru yang membutuhkan git v2.18, yang belum pernah diperbarui oleh pengelola paket dan pemasang. Anda akan mendapatkan kesalahanunknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config

Jadi solusi teraman adalah dengan merujuk versi / tag yang cocok dengan git yang telah Anda instal. Sebagai contoh:

https://raw.githubusercontent.com/git/git/v2.17.1/contrib/completion/git-completion.bash

Perhatikan bahwa itu memiliki v2.17.di URL, bukan master. Dan kemudian, tentu saja, pastikan untuk menggunakannya di skrip startup bash.

bijak
sumber
Ini adalah jawaban macOS terbaik.
AShelly
Wow ... Setelah sekitar satu jam memikirkan hal ini, komentar Anda adalah kuncinya. Terima kasih untuk solusi ini! Keemasan!
Myke Carter
4
File khusus versi macos seharusnya sudah ada di disk di sini: /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bashUntuk amannya, saya membedakannya dengan versi 2.17.1 di github dan cocok.
jmt
18

Ubuntu 14.10

Pasang git-coredanbash-completion

sudo apt-get install -y git-core bash-completion
  • Untuk penggunaan sesi saat ini

    source /usr/share/bash-completion/completions/git
  • Agar selalu aktif untuk semua sesi

    echo "source /usr/share/bash-completion/completions/git" >> ~/.bashrc
Andrzej Rehmann
sumber
1
Terima kasih, ini berhasil untuk saya di Ubuntu 16.04 LTS :)
Mrunal Pagnis
6

Lakukan saja ini di ~/.bashrc:

source /usr/share/bash-completion/completions/git

Jawaban lain meminta Anda untuk menginstal bash-completion, Anda tidak perlu melakukan itu, tetapi jika Anda melakukannya, maka tidak perlu mencari penyelesaian secara langsung. Anda melakukan satu atau yang lain, tidak keduanya.

Solusi yang lebih umum adalah menanyakan lokasi sistem seperti yang direkomendasikan oleh proyek penyelesaian bash:

source "$(pkg-config --variable=completionsdir bash-completion)"/git
FelipeC
sumber
1
Solusi generik Anda bekerja dengan sempurna untuk saya di Ubuntu 18.04. Untuk boot, metode Anda sangat ringkas - terima kasih!
Jason R Stevens CFA
4

di ubuntu saya ada file yang diinstal di sini:

source /etc/bash_completion.d/git-prompt

Anda dapat mengikuti tautan ke dalam /usr/lib/git-corefolder tersebut. Anda dapat menemukan di sana instruksi, bagaimana mengatur PS1 atau menggunakan__git_ps1

kisp
sumber
3

Mungkin bermanfaat bagi seseorang: -

Setelah mengunduh .git-complete.bash dari tautan berikut,

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

dan mencoba menggunakan fungsi __git_ps1, saya mendapatkan kesalahan karena--

 -bash: __git_ps1: command not found

Tampaknya kita perlu mengunduh skrip secara terpisah dari master untuk membuat perintah ini berfungsi, karena __git_ps1 didefinisikan di git-prompt.sh. Mirip dengan mengunduh .git-complete.bash, dapatkan git-prompt.sh:

curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > ~/.bash_git

dan kemudian tambahkan yang berikut ini di .bash_profile Anda

source ~/.bash_git
if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
export PS1='\W$(__git_ps1 "[%s]")>'
fi

source ~ / .bash.git akan mengeksekusi file yang diunduh dan

export PS1='\W$(__git_ps1 "[%s]") Perintah akan menambahkan nama cabang checkout setelah direktori kerja saat ini (jika itu adalah repositori git).

Jadi akan terlihat seperti: -

dir_Name[branch_name] di mana dir_Name adalah nama direktori kerja dan nama_cabang akan menjadi nama cabang yang sedang Anda kerjakan.

Harap diperhatikan - __git_ps1 peka huruf besar / kecil.

Nicks
sumber
1

Arch Linux

Sumber /usr/share/git/completion/git-completion.bashdi salah satu file startup bash.

Sebagai contoh:

# ~/.bashrc

source /usr/share/git/completion/git-completion.bash

Anda mungkin dapat menemukan skrip di lokasi lain seperti /usr/share/bash-completion/completions/gittetapi skrip ini tidak berfungsi untuk saya.

rampok
sumber
-1

Ubuntu

Ada jawaban yang bagus di sini . Bekerja untuk saya di Ubuntu 16.04

Windows

Git Bash adalah alat untuk memungkinkan penyelesaian otomatis. Tidak yakin apakah ini adalah bagian dari distribusi standar sehingga Anda dapat menemukan tautan ini juga berguna. Ngomong-ngomong, Git Bash memungkinkan untuk menggunakan perintah shell Linux untuk bekerja di windows, yang merupakan hal yang hebat bagi orang-orang, yang memiliki pengalaman di lingkungan GNU / Linux.

andrgolubev
sumber
-1

Di Github dalam proyek Git, Mereka menyediakan file bash untuk melengkapi perintah git secara otomatis.

Anda harus mengunduhnya ke direktori home dan Anda harus memaksa bash untuk menjalankannya. Ini hanyalah dua langkah dan dijelaskan dengan sempurna (langkah demi langkah) di posting blog berikut.

blog code-worrier: pelengkapan otomatis-git /

Saya telah mengujinya di mac, ini seharusnya berfungsi di sistem lain juga. Anda dapat menerapkan pendekatan yang sama ke sistem operasi lain.

wasabi
sumber