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

「あれ? 今の git ブランチなんだっけ。あっ新しくブランチ切ってなかった!」これをやってしまって、新しいブランチにコミットを移す作業はめんどくさいですね。。。ブランチ名さえ確認していれば…この状況、zsh の設定だけである程度は防げます!

こんにちは。ダタク [@iQeeeda] です。

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] することを忘れにくい
  • 表示されているブランチ名はマウス選択で簡単にコピーできる

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

git ブランチ名表示の設定方法

~/.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 設定方法

まだコメントはありません