1箇所コピペするだけでgitブランチ名を常に表示【.zshrc】

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

こんにちは。タクマ™ [@suwaru_blog] です。

GitHub を使い始めたばかりの駆け出しエンジニアに質問です。
このような経験をしたことありませんか?

さて、コミットも終わったし、リモートリポジトリにプッシュしよう
あれ?今のブランチ名なんだっけ…あっ新しくブランチ切ってなかった!

うーん、切ない。

ブランチを間違えて作業するとこうなる

上記ミスをしてしまうと、こんな感じの対応をすることになります。

  1. git log でやってしまったコミット ID をメモ
  2. 正しいブランチを切り直してチェックアウト
  3. 正しいブランチに git cherry-pick [コミット ID]
注意深くブランチ名を確認する習慣があれば、こんなことには…

と、思うかもですが…いつも git branch でブランチ名を見る必要はありませんよ。
zsh の設定で「常にコマンドライン上にブランチ名を表示」しておけばいいのです!

今回は git ブランチ名を常に表示する ~.zshrc の設定を紹介します!

本題に入る前に…

コマンドラインの見た目をガラっと変えることもできる Starship の導入もオススメです!
これは最初から Git のブランチ名が表示されているテーマです。

設定後の見た目

先に設定後の見た目を紹介しておきます。
git 管理されたプロジェクトに入ると、画面右側にブランチ名が表示されます。

master ブランチで作業していることが常に分かる

ブランチ名の文字色の意味

ブランチ名の文字色には意味を持たせています。

文字色状態
全て git commit されてクリーンな状態
git commit されていないファイルがある状態
管理されていないファイルがある状態
git add されていないファイルがある状態
コンフリクトが起こった状態
上記以外の状態

この設定をすることのメリット

  • 作業中ブランチ確認のために git branch を打たなくてよくなる
  • git checkout [branch] 忘れを防げる
  • マウス選択でブランチ名を簡単にコピーできる

メリットしかないので設定しておいたほうがいいです!

設定方法

~/.zshrc を開いて、以下内容をコピペしてください。

~/.zshrc
# git ブランチ名を色付きで表示させるメソッド
function rprompt-git-current-branch {
  local branch_name st branch_status

  if [ ! -e  ".git" ]; then
    # git 管理されていないディレクトリは何も返さない
    return
  fi
  branch_name=`git rev-parse --abbrev-ref HEAD 2> /dev/null`
  st=`git status 2> /dev/null`
  if [[ -n `echo "$st" | grep "^nothing to"` ]]; then
    # 全て commit されてクリーンな状態
    branch_status="%F{green}"
  elif [[ -n `echo "$st" | grep "^Untracked files"` ]]; then
    # git 管理されていないファイルがある状態
    branch_status="%F{red}?"
  elif [[ -n `echo "$st" | grep "^Changes not staged for commit"` ]]; then
    # git add されていないファイルがある状態
    branch_status="%F{red}+"
  elif [[ -n `echo "$st" | grep "^Changes to be committed"` ]]; then
    # git commit されていないファイルがある状態
    branch_status="%F{yellow}!"
  elif [[ -n `echo "$st" | grep "^rebase in progress"` ]]; then
    # コンフリクトが起こった状態
    echo "%F{red}!(no branch)"
    return
  else
    # 上記以外の状態の場合
    branch_status="%F{blue}"
  fi
  # ブランチ名を色付きで表示する
  echo "${branch_status}[$branch_name]"
}

# プロンプトが表示されるたびにプロンプト文字列を評価、置換する
setopt prompt_subst

# プロンプトの右側にメソッドの結果を表示させる
RPROMPT='`rprompt-git-current-branch`'

Terminal を開き直して表示されるかどうか確認してみてください。

関連記事

zsh ロードマップ

zsh インストール方法

zsh 設定方法

コメントを残す

*