
こんにちは。iQeda [@iQeeeda] です。
GitHub を使い始めたばかりの駆け出しエンジニアに質問です。
このような経験をしたことありませんか?
あれ?今のブランチ名なんだっけ…あっ新しくブランチ切ってなかった!
うーん、切ない。
ブランチを間違えて作業するとこうなる
上記ミスをしてしまうと、こんな感じの対応をすることになります。
git logでやってしまったコミット ID をメモ- 正しいブランチを切り直してチェックアウト
 - 正しいブランチに 
git cherry-pick [コミット ID] 
と、思うかもですが…常に git branch でブランチ名を気にする必要はありませんよ。
zsh の設定で「常にコマンドライン上にブランチ名を表示」しておけばいいのです!
~.zshrc の設定を紹介します!本題に入る前に…
コマンドラインの見た目をガラっと変えることもできる Starship の導入もオススメです!
これは最初から Git のブランチ名が表示されているテーマです。
設定後の見た目
先に設定後の見た目がどうなるか紹介しておきます。
git 管理されたプロジェクトに入ると、画面右側にブランチ名が表示されます。
ブランチ名の文字色の意味
ブランチ名の文字色には意味を持たせています。
| 文字色 | 状態 | 
|---|---|
| 緑 | 全て git commit されてクリーンな状態 | 
| 黄 | git commit されていないファイルがある状態 | 
| 赤 | 管理されていないファイルがある状態git add されていないファイルがある状態コンフリクトが起こった状態  | 
| 青 | 上記以外の状態 | 
この設定のメリット

- 作業中ブランチ確認のために 
git branchを打たなくてよくなる - 現在のブランチ名が見えているので 
git checkout [branch]することを忘れにくい - 表示されているブランチ名はマウス選択で簡単にコピーできる
 
メリットしかないので、早めに設定しておいたほうがいいです!
設定方法
~/.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 設定方法
お仕事ください!
僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。 なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。
カテゴリ「Develop」の最新記事

    
                  TerraformによるLinodeインスタンス新規作成サンプル                
                  【Fingerprint】CircleCIがSSHできない問題解決                
                  【Laravel】セッションタイムアウト後のログイン処理で前回URLに遷移するバグ修正                
                  M1 Mac(2021)でanyenv/phpenvの初期設定!                
    
    
    
    
    
    
    
    
    
    
    
参考になる記事をありがとうございます。
echo “${branch_status}[$branch_name]”
こちらなんですが、最後に %f が抜けているように思うのですがいかがでしょう?
私の環境では少なくとも表示できているのですが、問題ありましたでしょうか?
不具合を確認できたら、記事を修正しようと思います。
man zshmiscコマンドで zsh のパラメータについて確認できますが、%F{色番号}が文字色を指定、%fが文字色リセットの認識です。echo "${branch_status}[$branch_name]"は変数の参照をしているだけなので、ここでは
%fを使わなかったのだと思います。試して見たところ、私の環境ではうまく行きました。
参考になる記事ありがとうございます!
コメントありがとうございます!
動いたようで良かったです。今後ともよろしくお願いします。
入力するコマンドもブランチ名と同じ色になってしまうのですが、修正する方法はありますか?