gitのセキュリティー問題のため、macのgitのバージョンupdate


最近
Xcode 11.4.1 より前のバージョンでcredential helperの脆弱性によりgitの認証情報が漏えいする可能性があります。
という情報を見つけた。
参照)https://at-virtual.net/securecoding/%E3%80%90poc%E3%81%82%E3%82%8A%E3%80%91cve-2020-5260-xcodemac%E7%89%88%E3%81%ABgit%E3%81%AE%E8%AA%8D%E8%A8%BC%E6%83%85%E5%A0%B1%E3%82%92%E5%8F%96%E5%BE%97%E3%81%95%E3%82%8C%E3%82%8B%E8%84%86/

自分はすでにXcodeを最新バージョンにアップデートしているが、結局gitのセキュリティーの問題なので、gitのバージョンも上げる必要がある。
それで自分のgitのバージョンを調べて見た。

➜  /Volumes git --version
git version 2.24.2 (Apple Git-127)

現在(2020/04/22)時点でgitの最新バージョンは2.26.2
バージョンが古いのでgitのアップデートをしたい。

macでgitの種類

結論から言うと、mac環境でgitを使うためには、3つの方法があって、それぞれupdate方法が異なる。
1. xcodeに含まれているgitと使う → updateできない。公式ホームページからファイルをダウンロードして再度インストールするしかない。
2. 公式ホームページからファイルをダウンロードしてインストールする → updateできない。公式ホームページからファイルをダウンロードして再度インストールするしかない。
3. Homebrewでinstallしたgitを使う → brew update && brew upgrade コマンドを叩いてupdate

自分の現在gitがどちらから来ているのかがわからないならターミナルでwhich gitコマンドを叩いて確認できる。

➜  /Volumes which git
/usr/bin/git

自分は1. xcodeに含まれているgitなので/usr/bin/gitのディレクトリーが出ている。
Homebrewでinstallしている場合は/usr/local/bin/gitのディレクトリーが出る。
このgitをupdateするためHomebrewからgitをinstallすることにした。

Homebrewでgitをinstall

➜  /Volumes brew update && brew install git

ターミナルで上記のコマンドを叩く
そうしてもう1回which gitを叩くと

➜  /Volumes which git
/usr/bin/git

あれ?まだxcodeのgitのまま
Homebrewでinstallしたgitにする適用されていない。

Homebrewでinstallしたgitの適用方法

1. Homebrewのリンクを貼り直す

Homebrewでインストールされたパッケージはその実体が /usr/local/Cellar に、そのリンクが /usr/local/binにそれぞれ保存されている。
そのリンクを貼り直して、ターミナルを再起動するとmacはHomebrewでinstallしたgitに認識する。

➜  ~ brew unlink git && brew link git
Unlinking /usr/local/Cellar/git/2.26.2... 206 symlinks removed
Linking /usr/local/Cellar/git/2.26.2... 206 symlinks created

を叩いて、ターミナルを再起動した後、which gitを叩いて確認する。

➜  ~ which git
/usr/local/bin/git

Homebrewのgitのディレクトリーが出ている。成功。

2. 環境変数を指定する

bashの環境設定ファイルにHomebrewのgitのPATHを登録する。
mac osのcatalinaの場合、デフォルトシェルがzshになっているので、ホームディレクトリから設定ファイル.zshrcを探す。ない場合には作る。
catalina以前のバージョンの場合、bashシェルのなので.bash_profileにする。

.zshrcに下記のPATHを登録して、ターミナルを再起動する。

export PATH="/usr/local/git/bin:$PATH"

再起動した後、which gitを叩いて確認する。

➜  ~ which git
/usr/local/bin/git

成功。

gitのバージョン確認

➜  ~ git --version
git version 2.26.2