14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめてのアドベントカレンダーAdvent Calendar 2023

Day 13

【Git / zsh】git branchを打たずにターミナルにブランチを表示させるための設定

Last updated at Posted at 2023-12-12

はじめに

こんにちは、Webエンジニア目指して学習中のさばと申します🐟(X:@saba7678pg

はじめてのアドベントカレンダー Advent Calendar 2023 13日目として参加させていただきました。

エンジニア界隈の風物詩のようなものでしょうか、初めて実際に混ざることができてとても嬉しいです!
内容は駆け出しが書いた駆け出し向けの簡単な記事ではございますが、誰かしらの参考になりましたら幸いです🙇‍♂️

内容について、引用元を確認したり、手元で動作を確認しながら書かせていただきましたが、
万が一誤りや補足情報等ございましたら、お手数ですがコメント・DM等でお知らせ頂けますと幸いです。

今回の記事の対象者

  • Macユーザー
  • シェルにzshを用いている

この記事でできること

Image from Gyazo

  • 黒塗りで潰している部分には各ユーザーの情報
  • ~/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 branchgit 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を扱っているディレクトリに移動し現在のブランチが表示されていれば成功です🐟💨

引用

14
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?