2014/03/13更新

[Git] 入力補完を設定して、Gitをより高速に利用しよう

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
Gitをコマンドで利用する際に、あのコマンドなんだっけ、あのオプションなんだっけ、という経験がある方は多いのではないでしょうか。 今日は、Gitコマンドやオプションの入力補完を設定することで、そんな問題に取り組んでみようと思います。
画像

Special Thanks to http://flic.kr/p/kyqTfi



入力補完をセットアップ

Linuxのコマンドを使っていて、入力補完ができるのって便利ですよね。 実は、Gitにも入力補完を行う仕組みが用意されています。Gitをコマンドで利用する方は、セットアップすると作業効率がUPしますよー。

まずは、入力補完を行うシェルを取得します。Github上のgitのレポジトリを取得します。
$ git clone https://github.com/git/git
さすがはGit本体のレポジトリ。ちょっと重たいですね。クローンされるまで気長に待ちましょう。 Cloneできたら、レポジトリ内にあるgit-completion.bashというシェルを任意の場所にコピーして、ターミナル起動時などに自動的に実行されるようにします。
# 以下のファイルが入力補完を有効にするファイルです
# (gitレポジトリルート)/contrib/completion/git-completion.bash

# 入力補完を有効にするファイルを、任意の場所にコピーします。
$ cp contrib/completion/git-completion.bash ~/local/tool/

# ~/.bashrcに、上記のファイルが実行されるように記載しておきます。
# (~/.bashrcにて、以下を記載する)
# source $HOME/local/tool/git-completion.bash
git-completion.bashを実行することで、gitコマンドの入力補完ができるようになるのです! 上記を設定したのちに、ターミナルを再起動するか、source ~/.bashrcを実行すると、Gitコマンドの入力補完が有効になります。



入力補完を使ってみる

実際に試してみるとこんな感じです。

(以下は何らかのGitレポジトリ内でコマンドを利用した例です)

# TABを押すことで、入力補完を行うことができます。
# 例えば、gitと入力してスペースを置いてタブを押すと、たくさんのgitコマンドが表示されます。
$ git <tab>
add                      config                   lkgr                     reset 
am                       credential               log                      revert 
annotate                 credential-osxkeychain   lost-found               rm 
apply                    crsync                   merge                    runhooks 
archive                  crup                     mergetool                send-email 
bisect                   describe                 mv                       shortlog 
blame                    diff                     name-rev                 show 
branch                   difftool                 notes                    show-branch 
bundle                   fetch                    p4                       st 
checkout                 filter-branch            peek-remote              stage 
cherry                   format-patch             pull                     stash 
cherry-pick              fsck                     push                     status 
citool                   gc                       rebase                   submodule 
cl                       get-tar-commit-id        reflog                   subtree 
cl-upload-hook           grep                     relink                   svn 
clean                    gs                       remote                   tag 
clone                    help                     repack                   tar-tree 
cm                       imap-send                replace                  try 
column                   init                     repo-config              whatchanged 
commit                   instaweb                 request-pull             
たくさんの入力可能なコマンドが表示されましたね。これが表示されれば、うる覚えのコマンドも使いやすいですね。

この入力補完がすごいところは、Gitコマンドのオプションも入力補完ができることです。 例えば、git logのオプションを思い出すのは大変なことも多いですが、この入力補完を使えばオプションの指定が楽にできます。
# gitコマンドを入力後、TABを押すと、利用可能なオプション候補一覧が表示されます。
# 以下では「--」から始まるオプションの一覧を表示しています。
$ git log --<tab>
--abbrev                   --dirstat                  --max-parents=             --pretty=
--abbrev-commit            --dirstat-by-file          --merges                   --quiet 
--abbrev=                  --dirstat-by-file=         --min-age=                 --raw 
--after=                   --dirstat=                 --min-parents=             --relative-date 
--all                      --dst-prefix=              --minimal                  --remotes 
--all-match                --exit-code                --name-only                --reverse 
--author=                  --ext-diff                 --name-status              --root 
--before=                  --find-copies-harder       --no-color                 --shortstat 
--binary                   --first-parent             --no-ext-diff              --simplify-by-decoration 
--branches                 --follow                   --no-max-parents           --simplify-merges 
--check                    --format=                  --no-merges                --since=
--cherry-pick              --full-diff                --no-min-parents           --sparse 
--children                 --full-history             --no-notes                 --src-prefix=
--color                    --full-index               --no-prefix                --stat 
--color-words              --graph                    --no-renames               --summary 
--committer=               --grep=                    --not                      --tags 
--cumulative               --histogram                --notes                    --text 
--date-order               --ignore-all-space         --numstat                  --topo-order 
--date=                    --ignore-space-at-eol      --oneline                  --until=
--decorate                 --ignore-space-change      --parents                  --walk-reflogs 
--decorate=                --inter-hunk-context=      --patch-with-stat          --word-diff 
--dense                    --left-right               --patience                 
--diff-algorithm=          --max-age=                 --pickaxe-all              
--diff-filter=             --max-count=               --pickaxe-regex            
なかなかの便利ものですね。 利用頻度の高いコマンドは、Aliasに登録(詳しくは、こちら)しちゃいますが、時々しか使わないコマンド(マージの時に使うgit checkout --ours filenameなど)は、この入力補完を使うことで、作業がはかどりそうです。



最後に

以上簡単ですが、Gitコマンドの入力補完のセットアップと利用方法を、ブログで扱ってみました。 このようなちょっとした改善を積み重ねると、開発スピードが上がって良いですよね。 これからも色々とブログにアウトプットしていきたいと思いますので、どうぞ宜しくお願いします。

最後までご覧頂きましてありがとうございました。





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。