はじめに
こんにちは、Webエンジニア目指して学習中のさばと申します🐟(X:@saba7678pg)
はじめてのアドベントカレンダー Advent Calendar 2023 13日目として参加させていただきました。
エンジニア界隈の風物詩のようなものでしょうか、初めて実際に混ざることができてとても嬉しいです!
内容は駆け出しが書いた駆け出し向けの簡単な記事ではございますが、誰かしらの参考になりましたら幸いです🙇♂️
内容について、引用元を確認したり、手元で動作を確認しながら書かせていただきましたが、
万が一誤りや補足情報等ございましたら、お手数ですがコメント・DM等でお知らせ頂けますと幸いです。
今回の記事の対象者
- Macユーザー
- シェルに
zsh
を用いている
この記事でできること
- 黒塗りで潰している部分には各ユーザーの情報
-
~/Projects/rravel_app
現在のディレクトリ -
(develop)
現在のブランチ
このような表記ができるようになります。
まずは自身のPCのシェルを確かめる!
bashかzshでやり方が異なるようです。
根本的なところですが、自分のPCのシェルを改めて確認してみましょう。
今回の記事では zsh
を対象としていますのでご注意ください!
# ターミナルで実行
XXX ~ % echo $SHELL
/bin/zsh
ちなみに、上記のコマンドはログイン時にデフォルトで起動するシェルのパスが表示されているようです。
特に設定してなければ上記で問題ないと思いますが、BashやZshを切り替えたりしている方は、
現在使用しているシェルではなくログイン時のデフォルトシェルが表示される可能性があります。
# ターミナルで実行
$ echo $0
-zsh
上記は現在のシェルを確認するコマンドなので、必要に応じて試してみてください。
Gitのプロンプトをダウンロードする
ターミナルにブランチを表示させるためのプロンプトをダウンロードします。
# ターミナルで実行
mkdir ~/.zsh
cd ~/.zsh
curl -o git-prompt.sh https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
※誤ってダウンロードしたり操作をやり直したい場合等は、該当ディレクトリでrm ~/.zsh/git-prompt.sh
で削除ができます。
【コマンド解説】
mkdir ~/.zsh
cd ~/.zsh
- 基本的なコマンドですが、これはホームディレクトリに
.zhs
というディレクトリを作成し、そのディレクトリに移動するための操作です。 -
.zsh
ディレクトリはZshの設定ファイルやカスタマイズスクリプトなどを整理して保管するための場所として用います。
curl -o git-prompt.sh https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
ソース元
(補足)git-prompt.shの記載内容
- ソース元を見ていただきますと英文字の羅列が記載されています😱
- 今回ブランチ表示に関わる部分としてスクリプトの中核を担うのが
__git_ps1
関数です。スクリプトによって現在の作業ブランチの名前を取得し、ターミナルに表示するための関数が記載。 - その他未コミットの変更表示やスタッシュ状態の表示等様々なカスタイマイズのためのコードが記載されています。
- Gitリポジトリからgit-propmt.shスクリプトをダウンロードします。
-
curl
URLを使用してインターネットからデータを転送するために使用。 -
-o git-prompt.sh
curlでダウンロードしたデータを保存するファイル名を指定。今回はgit-prompt.shというファイル名で保存される。 -
URL部分
DLするデータのソースを指定。
-
.zshrc
ファイルに設定を記載する
ここまでの工程でダウンロードしたファイルを読み込めるよう、.zshrcファイル
に設定を追記します。
おそらくルートディレクトリに隠しファイルとして保存されていると思います。
Shidt + Cmd + .
で隠しファイルを表示するか、ターミナルから直接開いてみましょう。
# .zshrc
# 以下をファイル内に追記する
source ~/.zsh/git-prompt.sh
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWUNTRACKEDFILES=true
GIT_PS1_SHOWSTASHSTATE=true
GIT_PS1_SHOWUPSTREAM=auto
setopt PROMPT_SUBST ; PS1='%F{green}%n@%m%f: %F{cyan}%~%f %F{red}$(__git_ps1 "(%s)")%f
\$ '
【コード解説】
-
source ~/.zsh/git-prompt.sh
git-prompt.shスクリプトの読み込み。このファイルにGitリポジトリの情報(ブランチ名など)をプロンプトに表示する機能が含まれている。 -
GIT_PS1...
git-prompt.shによって提供されるプロンプトの表示についてのオプション設定
GIT_PS1... | 説明 | 代替コマンド |
---|---|---|
...SHOWDIRTYSTATE=true |
作業ディレクトリに未コミットの変更がある場合、ブランチ名の隣に* を表示。 |
git status |
...SHOWUNTRACKEDFILES=true |
未追跡のファイルがある場合、ブランチ名の隣に% 記号を表示 |
git status |
...SHOWSTASHSTATE=true |
スタッシュされた変更がある場合、ブランチ名の隣に$ を表示。 |
git stash list |
...SHOWUPSTREAM=auto |
現在のブランチとリモートのブランチとの関係を示す。現在のブランチがリモートブランチより遅れている場合は< 、進んでいる場合は> が表示される。 |
git branch やgit branch -vv の代替要素。 |
-
setopt PROMPT_SUBST ; PS1='%F{green}%n@%m%f: %F{cyan}%~%f %F{red}$(__git_ps1 "(%s)")%f \$ '
-
プロンプトのフォーマットを設定し、
__git_ps1
関数を使用してGitの情報を表示するためのコード。 -
setopt PROMPT_SUBST
プロンプト内でのコマンド置換が有効になる。 -
PS1=
プロンプトのフォーマット設定コード 内容 %F
色の設定。ここでは緑色のフォントを設定し、特に指定がなければ %f
はデフォルトのフォント色となる。%n
ユーザー名 %m
マシン名 %~
現在のディレクトリ(ホームディレクトリは ~ と表示) -
$(__git_ps1 "(%s)")
git-prompt.shスクリプトの関数を呼び出し、Gitリポジトリの情報を表示。(%s)
はGit情報のフォーマットを指定。
-
更新したファイルの再読み込み
# ターミナルで実行
source ~/.zshrc
最後に追記内容を反映させるためにターミナルで上記を実行し、ファイルを読み込み直し、ターミナルを再起動しましょう。
gitを扱っているディレクトリに移動し現在のブランチが表示されていれば成功です🐟💨
引用