macOS CatalinaでGitを最新のものにアップデートする方法(Homebrew使用)


概要

以下の記事を拝見してちょっと怖くなったのでGitを最新版にアップデートしたのですが、少し手間取ったので自分の備忘録も兼ねて方法をまとめます。

①Git 2.26.0以下にある脆弱性
※注釈に記載されていますが、厳密には2.26.0以下の全てのバージョンに脆弱性があるというわけでは無いようです。

プログラミングの勉強を始めて2ヶ月ほどなのでかなり初歩的な内容を含みますがご了承ください。
結論から言うと、macOSのデフォルトシェルはzshなので、.zprofileにパスを記載する必要がありました。自分が使っているシェルの種類にも注意が必要だったようです。

Homebrewのインストール

Macのパッケージの管理ではHomebrewが大変便利とのことですが、恥ずかしながら使ったことがなかったのでインストール。以下の記事を参考にさせていただきました。

②【簡単】MacにHomebrewをインストールする方法と基本的な使い方

Gitのインストール

大筋は以下の記事を参考にさせていただいて実施しました。
③Git のインストール 〜Git をMacにインストールしよう〜

インストールだけではバージョンが変わらなかった

自分がもともと使っていたGitのバージョンは2.23.0だったのですが、$ brew install git後にgit --versionとしても
git version 2.23.0
と出てしまいました。

③の記事の後半に

もともとインストールされていた旧バージョンが出てしまう場合は、こちらを参考に、
パスを通してください。

とあったためそれ以降の内容も実施。

それでもバージョンが変わらない

それでもバージョンが変わらなかったため「mac git アップデート」とググって出てきた方法を片っ端から試しましたがどれを試してもバージョンが変わりませんでした。

困り果てたので今一度③の記事を良く良く読んでちゃんと理解していないところがあることに気付きました。
「.bash_profileってそもそも何?」

さっそくググります。
④.bash_profileとは | 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

どうやらbashというシェルの設定ファイルが.bash_profileだそうです。
※シェルとは人間の入力をパソコン(正確にはOSのカーネル)に伝えるプログラムで、ターミナルの操作は彼らが橋渡ししてくれて実行されているそうです。

自分のPCのデフォルトシェルは?

ということで気になってきたのが普段自分が使っているシェル。
ターミナル上で

$ echo $SHELL

を実行。

/bin/zsh

...何と自分のシェルはzshでした…
どおりで.bash_profileをいくらいじってもバージョンが変わらないわけですね。

※調べてみたところmacOS Catalina(2019年10月8日リリース)からデフォルトのシェルがzshになっているそうです。それまではデフォルトシェルがbashだったそうなので、ググって出てきたのもbashでの方法ばかりだったようです。

zshに合わせて必要な処理を実行

概ね③の記事の後半を参考にしつつzsh仕様にして処理を実行していきます。
その際に注意が必要なのが、bashの.bash_profileにあたるものがzshでは.zprofileになる、ということです。
なので、.bash_profileの箇所は全て.zprofileに置き換えて実行します。

$ echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zprofile
$ source ~/.zprofile

その後ターミナルを再起動し、再度バージョンを確認

$ git --version
git version 2.26.1

無事最新のバージョンにアップデートされてました!

後書き

最後、.zprofileに置き換えましょうと1行で書いてますが、もともとは.zsh_profileに置き換えて実行していました。
その結果、ターミナルを再起動するとgit --versionしてもgit version 2.23.0に戻ってしまっていて、また調べに調べてようやく.zprofileがzsh版の設定ファイルだと分かりました。(ファイル名が違うのでzshは起動時に.zsh_profileを読み込んでくれません。)
ITの世界は知れば知るほど新しいことが出てきて奥が深いです。。
シェルについてはまだほとんど分かりませんがきちんと理解すると大変便利なものみたいなのでどこかのタイミングでしっかりと理解を深め活用していきたいです。