Edited at

gitのブランチ名補完を試した際の備忘録

More than 1 year has passed since last update.


環境

git version 2.4.0


はじめに

gitのブランチ名補完を試してみて詰まったところの備忘録です。

「git chechkout ~~」や「git log ~~」など様々な場面でブランチ名を指定する際に、いちいち「git branch」を行ってからコピペという流れが無くなるので作業が早くなるはず?(まだ検証中)


先にまとめ


導入方法

http://qiita.com/snaka/items/4b0437a32da832d2e0db

すごく簡単!のはずなのですが...


解説


「FETCH_HEAD」「HEAD」「ORIG_HEAD」しか表示されない問題

参考URLに沿って作業を行ったのですが補完時に上記3つしか表示されませんでした。

▽Qiita - GitのHEAD, ORIG_HEAD, FETCH_HEAD, MERGE_HEADとは?

http://qiita.com/t-mochizuki/items/347cba461fd570bca03c

ハッシュ値の別名が表示されているだけで、ブランチ名を全く補完できていませんでした。

▽mawatari.jp - Gitコマンドをタブキーで補完できるようにする

http://mawatari.jp/archives/git-completion-bash

この記事を読んでfindを実行してみると...

# 検索してみる

find / -name git-completion.bash

# 既存のものがいくつか出てくる
/Applications/SourceTree.app/Contents/Resources/git_local/contrib/completion/git-completion.bash
/Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash

SourceTreeに入っていたgit-completion.bashを複製して使用してみることに。

cp /Applications/SourceTree.app/Contents/Resources/git_local/contrib/completion/git-completion.bash ~/.git-completion.bash

source ~/.git-completion.bash

補完できるようになりました!


aliasに登録しているコマンドが反応しない問題

通常のgitコマンドは補完できるようになったのですが、「gch」「gl」などaliasに登録しているコマンドが反応しませんでした。

▽basyura's blog - bash で git のブランチ名補完

http://blog.basyura.org/entry/2016/04/29/213610

aliasが対応できるように追記してあげれば良いとのこと。

# git-completion.bash最下部

# ここに
__git_complete git __git_main
__git_complete gitk __gitk_main

# こう追記した
__git_complete git __git_main
__git_complete gitk __gitk_main
__git_complete gch _git_checkout
__git_complete gd _git_diff
__git_complete gl _git_log
__git_complete gt _git_log
__git_complete gt2 _git_log

これでaliasコマンドも補完できるようになしました!


そもそもだけど.bashrcって何?

▽Qiita - .bash_profile ? .bashrc ? いろいろあるけどこいつらなにもの?

http://qiita.com/hirokishirai/items/5a529c8395c4b336bf31


~/.bash_profile:ログイン時に一度設定すればいいもの

~/.bashrc:bashを起動するたびに設定する必要のあるもの



さいごに

同僚が補完していて、便利そうだったので試してみました。

知らないけど便利な機能いっぱいあるんだろうなぁ。