その他
    ホーム 技術発信 DoRuby bashをカスタマイズして快適なgit生活
    bashをカスタマイズして快適なgit生活
     

    bashをカスタマイズして快適なgit生活

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    gitを利用して開発する際に、branch名を入力するのが煩わしいというのが悩みでした。
    何か良い方法は無いかと調べた結果、簡単に補完出来るようになることがわかりました。
    また、合わせてプロンプト上にgitの情報を表示できるようになったので、そちらも紹介したいと思います。

    参考にした記事:
    MacのターミナルでGitのブランチ名を表示する
    MacのGitで補完を効かせたりブランチ名を表示する設定

    環境

    CentOS release 6.5 (Final)

    git-completion.bashの利用

    git-completion.bashは、gitコマンドの補完スクリプトです。
    こちらを利用することで、tab補完を利用することが出来るようになります。
    gitのインストール時に既に準備されているので、そのまま利用することが出来ます。

    $ find / -name "git-completion"
    /usr/share/doc/git-1.7.1/contrib/completion/git-completion.bash
    

    環境やgitの導入方法によって、パスは異なるようです。(自分はyumで導入しました)
    また、個別に直接入手することも可能です。

    git/contrib/completion

    git-prompt.shの利用

    git-prompt.shを利用することで、プロンプトでgitの情報を表示出来るようになります。
    こちらも同様に、インストール時に準備されているものか、直接入手したものを利用します。

    git/contrib/completion

    利用方法はgit-prompt.shに記載されているので、今回は一部を紹介したいと思います。

    $ find / -name "git-prompt"
    /usr/local/git/contrib/completion/git-prompt.sh
    

    bashrcへの記述

    git-completion,git-promptを読み込むことで、補完やプロンプトへの情報表示を実現します。
    それぞれを読み込んだ後に、__git_ps1を環境変数に加えれば、情報の表示が可能です。

    今回は、色の変更も合わせて行いました。
    また、__git_ps1には様々なオプションがあるので、用途に合わせてカスタマイズすることも可能です。こちらもgit-prompt.sh内に説明があります。

    ~/.bashrc
    
    # git-completion,git-promptの読込
    source /usr/share/doc/git-1.7.1/contrib/completion/git-completion.bash
    source /usr/local/git/contrib/completion/git-prompt.sh
    
    # __git_ps1のオプション指定
    
    ## unstaged fileがある時は*, staged fileがあるときは+を表示
    GIT_PS1_SHOWDIRTYSTATE = 1
    ## stash fileがあるときは、$を表示
    GIT_PS1_SHOWSTASHSTATE = 1
    ## untracked fileがある時は、%を表示
    GIT_PS1_SHOWUNTRACKEDFILES = 1
    
    # 環境変数PS1の変更
    export PS1='\[\033[1;32m\]\u\[\033[00m\]:\[\033[1;34m\]\w\[\033[1;31m\]$(__git_ps1)\[\033[00m\] \$ '
    

    実際の画面は以下のようになります。
    デフォルトのまま使っていたので、だいぶわかりやすくなりました。
    また、gitコマンドやbranch名もtab補完出来るようになっています。

    利用例

    おわりに

    tab補完のおかげで、branch名の入力ミス等が減りだいぶ捗るようになりました。
    色々調べていると、まだまだ作業に役立ちそうなカスタマイズ等を見かけるので、暇をみて試してみたいと思います。

    記事を共有