こんにちは,米国データサイエンティストのかめ(@usdatascientist)です.
今日は,ターミナルのプロンプト部分にGitのユーザ情報とブランチ情報およびStaging情報を常に表示させる方法を紹介します.
めちゃくちゃ便利なので絶対にやりましょう.(作業自体はコピペのみで簡単ですが,シェル全体に影響を与えるファイルを変更します.linuxやmacに不慣れな方は,飛ばしても構いません.少し上級者向けの記事となっています.)
前回までの記事で,Gitの使い方を4回に渡って書きました.第一回はこちら
これからの記事でTerminal(iTerm2)を使ってGitを操作したんですが,初期設定だとGitがどのユーザでログインしているのかとか,どのブランチにいるのかわからないので結構不便です.(iTerm2についてはこちらの記事をご覧ください.)
そこで,今日はGitの情報をプロンプトに表示する方法を伝授しちゃいます!!
本記事はbash用です.他のshellを使っている場合は,それ用のファイルを更新してください.
また,他のShellでの動作確認はできておりません.
使っているShellをは$echo $SHELLで確認できます.
MacでShellを変更するにはこちらの記事が参考になるかもしれません.CatalinaからデフォルトのShellがzshになりましたが,まだまだ世の中bashがメインだと思うので,zshへの対応はしばらくお待ちくださいmm
(追記)zsh版はGit動画講座「米国AI開発者がやさしく教える入門講座」にて解説しています!詳細はこちら↓
目次
~/.bash_profileを変更する
ターミナル(Terminal)というのは,パソコンにコマンドで命令を出すアプリですが,これはShellというものを介してカーネル(kernel)というコア(核)に命令を送っています.こんな感じです.で,このShellの一つにbashと呼ばれるものがあって,macのTerminalもiTerm2もこのbashというものを使っています.
試しに,Terminal(iTerm2)上で $ echo $SHELL と打ってみてください.
1 2 |
$ echo $SHELL /bin/bash |
/bin/bash が表示されると思います.表示されない方はおそらくiTerm2を使っていないと思います.macユーザならmac OSのTerminalではなくiTerm2を使うようにしましょう.
また,そもそもmacじゃなくてwindowsなんだけどっていう人,これからプログラミングを学ぶならmacを強く推奨します.
全然難しいことはなくて,実際はただコピペするだけでOKです!めちゃ楽!
ステップ1:シェルファイルを配置
とりあえずこのファイルを /usr/local/etc/bash_completion.d/git-prompt.sh においてください.(色々方法はありますが,Githubページからファイルの中身を全コピーして, $touch /usr/local/etc/bash_completion.d/git-prompt.sh でファイルを作成してその中身をコピーすればOKです.sublimeを使っている方は $cd /usr/local/etc/bash_completion.d して, $subl git-prompt.sh でファイルを開いてペーストして保存しましょう.フォルダが無い場合は作成してください.フォルダを作るには $mkdir /usr/local/etc/bash_completion.d を実行すればOKかと思います.人によってフォルダがあったり無かったりするので,適宜環境を確認しつつ進めてください.)
(理由は聞かないでくださいw そういうものということでw
ステップ2:home brewをインストール(もし入ってなかったら)
Terminalで $ brew --version を実行してみてください.versionが表示された人はもうhome brew入ってるのでここは飛ばしてください.
入ってない人はこちらのページにしたがってインストールしましょう.(ちょっと時間かかるかも?)
2019年12月現在ではTerminal上で以下のコマンドを実行するとインストールできます.
1 |
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" |
home brewというのは,macユーザようのパッケージ管理ツールです.home brewを通していろんなパッケージ(アプリ)をインストールすることができます.エンジニア必須アイテムなので必ず入れましょう.
ステップ3 : hubをインストール(もし入ってなかったら)
Terminalで $brew install hub を実行!以上!
ステップ4:いよいよ~/.bash_profileを変更する
といってもコピペするだけだけどね!
Sublimeで ~/.bash_profile を開きましょう.Sublimeって何って人はこちらの記事を参考にいれてください.めちゃくちゃオススメの無料エディタです.
$ subl ~/.bash_profile
そして以下をコピペしてください.(htmlの関係で一部のコードが「undefined」となっているのでダブルクリックしてplain textにしてからコピペしてください!うまく回避する方法を今模索中です.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
function join_by { local IFS="$1"; shift; echo "$*"; } function _ps1_git_username { local git_users_array=`git config --global --get-all user.name` git_users=`join_by , $git_users_array` test "$git_users" == '{ユーザ名}' && echo "絵文字 " && return test "$git_users" && echo "$git_users" && return echo "No Git User" } # PS1 is the variable for the prompt you see everytime you hit enter git_prompt_script=/usr/local/etc/bash_completion.d/git-prompt.sh if [ -s $git_prompt_script ]; then # if git-prompt is installed, use it (ie. to install it use: # `brew install git`) source $git_prompt_script export GIT_PS1_SHOWDIRTYSTATE=true export PS1='\[\e[0;31m\]\W\[\e[0;32m\] ($(_ps1_git_username "(%s)")$(__git_ps1 ":%s")) \[\e[0m\]:$ ' else # otherwise omit git from the prompt export PS1="$ColorRed\W$ColorReset :$ " fi # Colors ls should use for folders, files, symlinks etc, see `man ls` and # search for LSCOLORS export LSCOLORS=ExGxFxdxCxDxDxaccxaeex # Load git completions git_completion_script=/usr/local/etc/bash_completion.d/git-completion.bash test -s $git_completion_script && source $git_completion_script # A more colorful prompt # \[\e[0m\] resets the color to default color ColorReset='\[\e[0m\]' # \e[0;31m\ sets the color to red ColorRed='\[\e[0;31m\]' # \e[0;32m\ sets the color to green ColorGreen='\[\e[0;32m\]' |
この部分 test "$git_users" == '{ユーザ名}' && echo "絵文字 " && return は変更する必要があります.ユーザ名はGitのUsernameを,絵文字の部分はこちらからお好きなものをコピペしてください.↓こんな感じで
ファイルを更新したら,新しいTerminalを開くか, $ source ~/.bash_profile と打って再度 ~/.bash_profile を実行します.
すると,プロンプトにGit情報が出ていると思います.
使い方
まず,Gitユーザをconfigにセットしていない場合は以下のコマンドでセットしましょう.
1 2 |
$ git config --global user.name {USERNAME} $ git config --global user.email {EMAIL} |
{USERNAME}と{EMAIL}の部分はGithubのアカウントのusernameとemailを入れます.
すると,ちゃんとプロンプトに選択している絵文字が表示されると思います.
次にステージングも試してみましょう.
試しにファイルを修正して,それぞれのstagingの状態を確認してみてください.ブランチ名の横の記号(*と+)で判別できます.(Gitのstaging操作についてはこちらの記事を参照ください.)
これがあると,自分がどのブランチでそういう状態にいるのか一目でわかるのでめちゃくちゃ便利です.
というかこれなくしてGit操作をTerminalでおこなうことはできませんw
まとめ
今日はGit情報をターミナルのプロンプトに表示するやり方を紹介しました!
~/.bash_profileは他にも便利なaliasを登録したり,pathを通したりするのに重宝します.
是非,上記のコードを理解して自分なりの変更を加えてみてください!(色とか変えられますよ〜)
それでは!