#環境
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を起動するたびに設定する必要のあるもの
#さいごに
同僚が補完していて、便利そうだったので試してみました。
知らないけど便利な機能いっぱいあるんだろうなぁ。