私は数日間この問題をうまくデバッグしようとしました。私は自分のマシンにgitとgit補完をインストールするために最善を尽くしましたが、ブランチ名(ローカルまたはリモート)をオートコンプリートできません。しかし、gitサブコマンドの完成はうまくいきます。Mac OSX上でブランチ名を取得するには?
私はSierra 10.12.5を実行しているMacを持っています。
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.12.5
BuildVersion: 16F73
私はbashを使用しています。これはHomebrew経由でインストールされています。
$ brew info bash | head -1
bash: stable 4.4.12 (bottled), HEAD
私は自作経由でのgitをインストールしました。
$ brew info git | head -1
git: stable 2.13.1 (bottled), HEAD
私はbash-completionをHomebrew経由でインストールしました。
$ brew info bash-completion | head -1
bash-completion: stable 1.3 (bottled)
私は必要なスクリプトを供給しています。
$ source $(brew --prefix)/etc/bash_completion
git-completion.bashが実際にはbash_completion.dディレクトリにあることを確認しました。
$ ll /usr/local/etc/bash_completion.d/git-completion.bash
lrwxr-xr-x 1 michael 65 Jun 18 02:19 /usr/local/etc/bash_completion.d/git-completion.bash -> ../../Cellar/git/2.13.1/etc/bash_completion.d/git-completion.bash
gitを使用しているとき、私はコマンドを自動補完しようとすると正しい自動補完動作を見ます。
$ git che{tab}
checkout cherry cherry-pick
ただし、ブランチ名の補完はまったく機能していないようです。代わりに、オートコンプリートは、Gitは(リモートとローカル)このリポジトリの他の支店について知っているん
$ git checkout{tab}
add annotate apply archive bisect [...list continues]
別のサブコマンドを提案しようとします。
しかし、gitはヒント数にかかわらず別のブランチを提案しません。
$ git checkout ma{tab} # => nothing
$ git checkout mas{tab} # => nothing
$ git checkout mast{tab} # => nothing
$ git checkout maste{tab} # => nothing
これは私のマシン上のすべてのgitリポジトリ内で発生しています。私はこれらのリポジトリを読み書きするのに必要な権限を持っています。
私はgitとbash-completionのアンインストールと再インストールを試みました。私は標準的なgit-completion.bashスクリプトをGithubから直接取得し、それを代わりにソーシングしようとしました。私はこれらを排除するためにすべてのgitのドットファイルを削除しようとしました。
すべてのガイドは、最新のgit-completion.bash(上記のリンク先)をダウンロードしてソースコードをダウンロードすることで私の自動補完の不具合を解決することを暗示しているようですが、残念ながらこれではこれをカットしていません場合。他のツール(tmuxなど)ではBash補完機能が正常に動作しているようですので、この問題はgit補完機能に限定されていると思います。
何か不足していますか?ブランチ名の補完を有効にするために必要な追加ステップは何ですか?
問題は、使用している 'bash'のバージョンかもしれません。現代のbash補完設定スクリプトは、AppleがmacOSを同梱しているものよりも新しい 'bash'を必要としていると思います。 a)より新しい 'bash'をインストールする必要があります。 b)/ etc/shellsに追加します。 c) 'chsh'(またはシステム環境設定>ユーザーとグループ>ロック解除/認証>アカウントを右クリック>詳細オプション)を使用してアカウントのシェルを変更します。 –
ビンゴ - これは私の問題でした。 'echo $ BASH_VERSION'はシステムのbashバージョン' 3.2.57(1)-release'を返しました。自作のbashを '/ etc/shells'に追加し、' chsh -s/usr/local/bin/bash'を実行すると、新しいシェルはブランチ名を自動完成します!あなたがこの質問への回答としてあなたのコメントを追加したいのであれば、私はそれを受け入れることを嬉しく思います。 – michaelxor