git bashコマンドライン補完を設定するにはどうすればよいですか?


129

たとえば、新しいubuntuマシンでは、を実行したばかりでsudo apt-get git、たとえばと入力しても完了しませんgit check[tab]

http://git-scm.com/docsには何も見つかりませんでしたが、IIRCの完了は最近のgitパッケージに含まれており、bashrcに適切なエントリが必要です。


Ubuntu Precise(およびFedora 17)でそのまま使用できます。
メカニカルカタツムリ

2
デフォルトであるかどうかを確認するには、を実行し(cd ~ && exec cat .bashrc | grep completion)ます。
aderchox 2018

回答:


181

Linuxの場合

ほとんどのディストリビューションでは、gitのインストール時にgit完了スクリプトがインストールされます/etc/bash_completion.d/(または/usr/share/bash-completion/completions/git)。githubに移動する必要はありません。あなたはそれを使う必要があるだけです-この行をあなたに追加してください.bashrc

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

Ubuntuの一部のバージョンでは、デフォルトでgit autocompleteが壊れている可能性があります。このコマンドを実行して再インストールすると修正されます。

sudo apt-get install git-core bash-completion

Mac

HomebrewまたはMacPortsを使用してGit Completionをインストールできます。

自作

if $BASH_VERSION> 4:(brew install bash-completion@2更新バージョン)MacOSのデフォルトでは3.2.57(1)-releaseが同梱されているため、bashのどのバージョンを使用しているかに特に注意してください。

に追加.bash_profile

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

古いバージョンのbashの場合: brew install bash-completion

に追加.bash_profile

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

MacPorts

sudo port install git +bash_completion

次にこれをあなたに追加してください.bash_profile

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

このガイドの詳細:BashのGit補完機能をインストールする

すべての場合において、変更を有効にするには、新しいシェルを作成する(新しいターミナルのタブ/ウィンドウを開く)必要があることに注意してください。


1
ほとんどの* nixボックス(特にUbuntu)にはすでにそのファイルが含まれているため、ユーザーに調達するだけで問題が解決しました。ありがとう。
nevvermind 2013年

5
ubuntuは/etc/bash_completion.d/git-promptとしてそれを持っているかもしれません
Catskul

2
私はGitを持っていますが、/ etc
bash_completion.d

13
私のUbuntu 14.04では、このファイルは/usr/share/bash-completion/completions/gitです。 /etc/bash_completion.d/git-prompt補完のためではなく、gitプロンプトのサポートに使用されます。
レイ・チェン

18
警告:Macのhomebrewメソッドはbrew uninstall bash-completion、homebrewを介してgitをインストールしている場合にのみ機能し、brew install git以前に他の方法でgitをインストールしていた場合にのみ機能します。その後、上記の手順が機能します。
patapouf_ai 2016年

66

同じ問題があり、以下の手順に従いました:

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

次の行を.bash_profile(通常はホームフォルダーの下に)追加します。

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

ソース:http : //code-worrier.com/blog/autocomplete-git/


私はプロキシの背後にいたので、カールを機能させるために最初にプロキシを設定するexport https_proxy=proxy_ip:proxy_port必要がありましたが、システムから設定を取得できない理由がわかりません。
madlymad 2015年

2
そのファイル名の前のドットでそのファイルを隠す必要はありません。また、gitバージョンに注意してください(wisbuckyの回答を参照)
Walter

42

表示される手順のほとんどは、ダウンロードするように指示します

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

そして、それをのようなbash起動スクリプトで調達します.bashrc

しかしmaster、それはブランチを参照しているため、問題がありgit-completion.bashます。これは、の最新バージョンです。問題は、インストールしたgitのバージョンと互換性がないために壊れることがあることです。

実際、masterブランチにgit-completion.bashはgit v2.18を必要とする新機能があり、パッケージマネージャーとインストーラーのいずれにもまだ更新されていないため、現時点では機能しなくなります。エラーが発生しますunknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config

したがって、最も安全な解決策は、インストールしたgitと一致するバージョン/タグを参照することです。例えば:

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

v2.17.URLにはの代わりにがあることに注意してくださいmaster。そして、もちろん、bash起動スクリプトでそれを調達するようにしてください。


これが最良のmacOS回答です。
AShelly

うわー...これについて私の脳を約1時間Gitバッシングした後、あなたのコメントが鍵となりました。この解決策をありがとう!ゴールデン!
Myke Carter

4
macosバージョン固有のファイルはすでにここにディスク上にあるはずです。/Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash念のため、githubの2.17.1バージョンと比較して、一致しました。
jmt

18

Ubuntu 14.10

インストールgit-coreしてbash-completion

sudo apt-get install -y git-core bash-completion
  • 現在のセッションの使用について

    source /usr/share/bash-completion/completions/git
  • すべてのセッションで常にオンにする

    echo "source /usr/share/bash-completion/completions/git" >> ~/.bashrc

1
ありがとう、これはUbuntu 16.04 LTSで私のために働いた:)
Mrunal Pagnis


5

ちょうどあなたの中でこれをしてください~/.bashrc

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

他の回答では、インストールするように指示されていますが、インストールするbash-completion必要はありませんが、インストールする場合は、補完を直接入手する必要はありません。あなたは両方ではなくどちらか一方を行います。

より一般的なソリューションは、bash-completionプロジェクトで推奨されているようにシステムの場所を照会することです。

source "$(pkg-config --variable=completionsdir bash-completion)"/git

1
あなたの一般的な解決策は私にとってUbuntu 18.04で完全に機能しました。起動するには、メソッドは非常に簡潔です-ありがとう!
Jason R Stevens CFA

4

私のubuntuにはここにファイルがインストールされています:

source /etc/bash_completion.d/git-prompt

/usr/lib/git-coreフォルダへのリンクをたどることができます。PS1の設定方法や使用方法についての説明があります__git_ps1


3

誰かのために役立つかもしれません:-

次のリンクから.git-completion.bashをダウンロードした後、

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

__git_ps1関数を使用しようとすると、次のエラーが発生しました-

 -bash: __git_ps1: command not found

__git_ps1はgit-prompt.shで定義されているため、このコマンドを機能させるには、マスターとは別にスクリプトをダウンロードする必要があるようです。.git-completion.bashのダウンロードと同様に、git-prompt.shを取得します。

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

そして.bash_profileに以下を追加します

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

source〜/ .bash.gitはダウンロードしたファイルを実行し、

export PS1='\W$(__git_ps1 "[%s]") コマンドは、現在の作業ディレクトリ(gitリポジトリの場合)の後にチェックアウトブランチ名を追加します。

したがって、次のようになります。

dir_Name[branch_name] ここで、dir_Nameは作業ディレクトリ名であり、branch_nameは現在作業しているブランチの名前です。

注意してください-__git_ps1は大文字と小文字を区別します。


1

Arch Linux

/usr/share/git/completion/git-completion.bashbashスタートアップファイルの1つをソースにします。

例えば:

# ~/.bashrc

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

他の場所でスクリプトを見つけることができるかもしれ/usr/share/bash-completion/completions/gitませんが、これらのスクリプトは私にとってはうまくいきませんでした。


-1

Ubuntu

ここに美しい答えがあります。Ubuntu 16.04で私のために働いた

ウィンドウズ

Git Bashは自動補完を可能にするツールです。これが標準ディストリビューションの一部であるかどうか不明なので、このリンクも役立ちます。ちなみに、Git BashではLinuxシェルコマンドを使用してWindowsで作業することができます。これは、GNU / Linux環境の経験がある人にとってはすばらしいことです。


-1

GitプロジェクトのGithubでは、gitコマンドをオートコンプリートするためのbashファイルを提供しています。

これをホームディレクトリにダウンロードし、bashで強制的に実行する必要があります。これは単に2つのステップであり、次のブログ投稿で完全に説明されています(ステップバイステップ)。

code-worrierブログ:autocomplete-git /

Macでテストしましたが、他のシステムでも動作するはずです。同じアプローチを他のオペレーティングシステムに適用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.