こんにちは。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」の最新記事
参考になる記事をありがとうございます。
echo “${branch_status}[$branch_name]”
こちらなんですが、最後に %f が抜けているように思うのですがいかがでしょう?
私の環境では少なくとも表示できているのですが、問題ありましたでしょうか?
不具合を確認できたら、記事を修正しようと思います。
man zshmisc
コマンドで zsh のパラメータについて確認できますが、%F{色番号}
が文字色を指定、%f
が文字色リセットの認識です。echo "${branch_status}[$branch_name]"
は変数の参照をしているだけなので、ここでは
%f
を使わなかったのだと思います。試して見たところ、私の環境ではうまく行きました。
参考になる記事ありがとうございます!
コメントありがとうございます!
動いたようで良かったです。今後ともよろしくお願いします。
入力するコマンドもブランチ名と同じ色になってしまうのですが、修正する方法はありますか?