はじめに
gitコマンドやブランチ名の補完が出来たら便利じゃないか、と思っていたところ
git-completionを使うと実現出来ると知ったので、導入方法をまとめておく。
正直Git使うなら使わない手はない。
公式はこちら。
https://github.com/git/git/tree/master/contrib/completion
(zsh, tcshにも対応している。)
前提
- bash
- Git 2.18以降1
- OS: Mac, Debian, CentOSなど
手順
以下の3ステップで完了です。
- git-completion.bashを取得する
- git-completion.bashを.bashrcで読み込むように書き加える
- .bashrcの設定を反映する
以下は導入の一例。
$ curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
$ echo "source ~/.git-completion.bash" >> ~/.bashrc
$ source ~/.bashrc
使い方
gitコマンドやブランチ名を打ちかけているところでタブキーを叩きます。
git che
とタイプしてタブキーを叩くとgit checkout
,git cherry
,git cherry-pick
が補完候補として表示され、git chec
とタイプしてタブキーを叩くとgit checkout
が補完されます。
シェルによるコマンドやファイル名の補完と一緒ですね。
ここで以下のようなエラーが出る人は、Gitのバージョンが古い(git-completion.bashの記述に対応していない)可能性があります。
Gitのバージョンを2.18以上にすると解消するかと。
$git checko #ここまで打ちかけてタブキーを叩いて以下のようなエラーが出る場合
Unknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config
(筆者はDebianでも使おうとしたところ、aptでGitのv2.11がインストールされていたのでこのエラーに出会いました。)
おわりに
筆者は普段はMacでTerminalにてbashを使う事が多いが、DebianやCentOSでも勿論git-completionは使える。
yum
やapt
でインストール出来るGitのバージョンはやや古いので、留意すべし。
よく使うコマンドはエイリアスを使い、トピックブランチの入力補完は本機能を使う、のがよくある手だろうか?
-
投稿時点(2018/9/17)では、git v2.18から加わった
--list-cmds
に対応している事が必要なようです。https://apple.stackexchange.com/questions/327817/git-completion-bash-producing-error-on-macos-sierra-10-12-6 ↩