4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

git switch/checkoutのタブ補完をローカルブランチだけにする方法

Last updated at Posted at 2025-03-14

Git CLIで checkoutswitch を利用する際に、ブランチ名をタブ補完で入力する方も多いと思います。

しかし、git の補完のデフォルトの挙動では、リモートリポジトリ上のブランチも含まれるため、タブを押すたびに大量の候補が表示されてしまうのが煩わしいと感じていました。

そこで補完候補をローカルブランチのみにする方法を探したところ、意外と簡単にできたため記事に残します。

(タブ補完の設定自体は他に様々な記事で説明されているため割愛します)

結論

環境変数に以下を追加する

GIT_COMPLETION_CHECKOUT_NO_GUESS=1

この設定はGit の補完スクリプトである git-completion.bashソースコードにコメントとして記載がありました。

結構重要な情報だと思うのですが、公式ドキュメントなど目立つところのでの記載は発見できませんでした。

git-completion.bashを利用している限り多くの環境で動作するのではないかと思います。
(筆者の環境はmac×zshですが、内部的にはgit-completion.bashが利用されているようで、問題なく動作しました。)

その他の補完関連オプション

ソースコードのコメントには他にもいくつかのオプションが記載されていたので、ついでにそちらも紹介します。

1. GIT_COMPLETION_SHOW_ALL_COMMANDS=1

通常は隠されているコマンドも候補に含まれるようになります。

例えば、ソースコードのコメントでは cat-file などのコマンドが表示される例として挙げられています。

2. GIT_COMPLETION_SHOW_ALL=1

通常は表示されないオプションも補完候補になります。

例えば、git commitの際の--allow-empty などのオプションが表示されるようになるとのことです。

3. GIT_COMPLETION_IGNORE_CASE=1

補完時に大文字小文字が区別されないようになります。

例えば FOO ブランチに切り替えたい時に、git switch f<TAB> と打つと FOOを補完してくれます。

まとめ

筆者の開発チームでは命名規則上、ブランチ名が大文字から始まることが多く、特にGIT_COMPLETION_IGNORE_CASE が便利に感じました。シフトキーを押す必要がなくなるだけで、ちょっとしたストレスから解放されます。

良い Git ライフを!

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?