web-dev-qa-db-ja.com

git bashコマンドライン補完を設定する方法は?

例えば。新鮮なubuntuマシン上で、Sudo apt-get gitを実行したところです。 git check[tab]

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

91
Vincent Scheib

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のオートコンプリートがデフォルトで破損する場合があります。このコマンドを実行して再インストールすると、修正されるはずです。

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 completionのインストール

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

144

私は同じ問題を抱えていて、以下の手順に従いました:

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/

51
jospratik

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

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

そして、.bashrcのようなbash起動スクリプトでソースします。

ただし、git-completion.bashの最新バージョンであるmasterブランチを参照しているため、これには問題があります。問題は、インストールした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

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

31
wisbucky

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
    
14
Andrzej Rehmann

https://github.com/git/git/blob/master/contrib/completion/git-completion.bash を参照してください

完了スクリプトを入手するだけです

14
wich

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

source /etc/bash_completion.d/git-Prompt

/usr/lib/git-coreフォルダーへのリンクをたどることができます。そこに指示、PS1のセットアップ方法、または__git_ps1の使用方法があります。

2
kisp

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

次のリンクから.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は大文字と小文字を区別します。

2
Nicks

~/.bashrcでこれを行うだけです:

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

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

より一般的な解決策は、bash-completionプロジェクトが推奨するシステムの場所を照会することです。

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