git-completion.bash による補完を git のエイリアス g に対しても有効化する方法
はじめに
Git のバージョンアップ に合わせて git-completion.bash もアップデートしたら、g
(git
のエイリアス)で補完が効かなくなった。
g
などのエイリアスに対しても補完を有効化する方法を忘れないようにまとめておく。(お察しの通り、過去の自分が有効化してたものを無効化してしまうという無能っぷり)
TL;DR
~/.git-completion.bash
の末尾に__git_complete g __git_main
を追加する- ↑ でも良いが、また
git-completion.bash
をアップデートする時には絶対忘れている(確信) ~/.git-completion.bash
の読み込み後に処理を追加する方が良さそう(大抵は~/.bashrc
)if [ -f ~/.git-completion.bash ]; then source ~/.git-completion.bash; __git_complete g __git_main; fi
- ワンライナーで書いてるが、実際は複数行で書いて OK(後述)
目次
環境・条件
1 | $ sw_vers |
詳細
~/.git-completion.bash を改造する方法
git commandのaliasを作ってる時でも補完して欲しい時 - Qiita に記載されているが、以下を ~/.git-completion.bash
に追加すれば OK。
1 | __git_complete <自分のエイリアス> __git_main |
自分の場合は g
を git
のエイリアスにしているので、下記のようになる。
1 | __git_complete git __git_main |
あとはターミナルを立ち上げ直すなり、source ~/.bashrc
なりすれば良い。
.bashrc を改造する方法
先程の方法でも良いが、また git-completion.bash
がアップデートされると、補完のことを忘れていて上書きしてしまう可能性が高い。(というか間違いなくやる)やってることは定義した関数の呼び出しというだけなので、~/.bashrc
で読み込んだ後であれば別ファイルで実行しても問題ない(はず)。
てなわけで、~/.bashrc
を次のように変更した。git push
とか git pull
に対してもエイリアスを設定しているので、合わせて補完するように指定している。
1 | if [ -f ~/.git-completion.bash ]; then |
これで git-completion.bash
のアップデートを上書きしても、問題なく補完が動くはず。
まとめ
~/.git-completion.bash
の末尾に__git_complete g __git_main
を追加する- ↑ でも良いが、また
git-completion.bash
をアップデートする時には絶対忘れている(確信) ~/.git-completion.bash
の読み込み後に処理を追加する方が良さそう(大抵は~/.bashrc
)if [ -f ~/.git-completion.bash ]; then source ~/.git-completion.bash; __git_complete g __git_main; fi
- ワンライナーで書いてるが、実際は複数行で書いて OK(後述)
参考文献
- git commandのaliasを作ってる時でも補完して欲しい時 - Qiita
- bash で git を g などで alias を設定しているときでも git-completion で補完できるようにする · Issue #55 · shikakun/tips
- Git 2.23がリリース - switchとrestoreコマンドが追加 | ソフトアンテナブログ
関連記事
- Git で自分のログだけを表示するエイリアス
- Git で package-lock.json がコンフリクトした時の解決方法
- Git で composer.lock の content-hash がコンフリクトした時の解決方法
- AWS S3 Bucket 内のオブジェクトの ACL(アクセス権限) を一括で変更する方法
- GitHub のリポジトリをプライベートリポジトリにクローンする方法
- GitHub で 2FA 設定済アカウントの Private Repository をクローン
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア