37
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

git-secretsをSourceTree (Macintosh)で使えるようにする手順

Last updated at Posted at 2017-02-07

背景

目的

この辺にあるように秘密情報のGitプッシュ・公開を防ぐために、git-secrets (https://github.com/awslabs/git-secrets) を導入したときのことです。

【2018/2/25追記】「GitHub に AWS キーペアを上げると抜かれるってほんと???試してみよー!」によると公開後13分後から幾つかのアクセスがあったそうです。

課題

git-secrets をインストール後に、SourceTreeでプッシュしようとすると、秘密情報が入ってないpushでもエラーを吐くようになりました。

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree commit -q -F /var/folders/xn/1hl03gp55_3df0y1xl37tg900000gp/T/SourceTreeTemp.xNvMuf 
git: 'secrets' is not a git command. See 'git --help'.
Completed with errors, see above

どうやら「クラウド破産しないように git-secrets を使う」の「SourceTreeなどを使っているなら」部分の設定ができていない様子。

今回の主題

タイトルのとおりですが、git-secrets導入に際して、SourceTreeでGitを使い続けるための具体的な手順をまとめておきます。
(2018.7.30追記) コメントで教えて頂いたbrewでGitインストールして、SIP設定をパスできるアプローチはこちらです。

環境条件

  • macOS Sierra version 10.12.3
  • SourceTree version 2.3.1
  • Git version 2.10.1 (Apple Git-78)

手順概要

  1. MacintoshのGitコマンドのファイルディレクトリに git-secrets をリンクする
  2. SourceTreeが利用するGitを「システムのGit」を使用するに変更する

概要と書くとこうなるのですが、意外に付帯する作業があったので、書き出していきます。

設定

[手順1] MacintoshのGitコマンドのファイルディレクトリに git-secrets をリンクする

Gitの場所を確認

git の場所を確認しておく -> /usr/bin/git

$ which git
/usr/bin/git

つまり、/usr/bin/git-secrets をリンクすると良いことになります。

git-secretsの場所を確認

git-secrets の場所を確認しておく -> /usr/local/Cellar/git-secrets/1.2.1/bin/git-secrets

$ which git-secrets
/usr/local/bin/git-secrets
$ readlink git-secrets
/usr/local/Cellar/git-secrets/1.2.1/bin/git-secrets

あとは、

cd /usr/bin
sudo ln -s /usr/local/Cellar/git-secrets/1.2.1/bin/git-secrets

で、終了かと思いきや、/usr/local/usr/bin へのリンクはsudo しても拒否されてしまいます。ですので、準備はまだまだ続きます。

System Integrity Protecton(SIP)を無効にする

El Capitan以降のOSでSystem Integrity Protecton(SIP)という機能が追加されセキュリティが強化されたとのことで、これを一旦無効にしてあげる必要があります。

  1. command + r を押したままでMacを起動させ、リカバリーモードで立ち上げる
  2. ヘッダメニューの「ユーティリティ」から「ターミナル」を立ち上げる
  3. ターミナルでSIPコマンド csrutil disable を打つ

git-secretsを/usr/bin/にリンクする

SIPが無効化されたら、いよいよgit-secrets を/usr/bin/にリンクします。

cd /usr/bin
sudo ln -s /usr/local/Cellar/git-secrets/1.2.1/bin/git-secrets

System Integrity Protecton(SIP)を有効にする

目的のリンクがはれたら、SIPを有効にし直します。

  1. command + r を押したままでMacを起動させ、リカバリーモードで立ち上げる
  2. ヘッダメニューの「ユーティリティ」から「ターミナル」を立ち上げる
  3. ターミナルでSIPコマンド csrutil enable を打つ

[手順2] SourceTreeが利用するGitを「システムのGit」を使用するに変更する

システムのGitを選択する

「SourceTree」の「環境設定」を開きます。更に「Git」タブを選択します。
スクリーンショット_2017-02-07_14_44_59.png

「システムのGitを使用する」をクリックして、git選択画面にいきます。 
スクリーンショット_2017-02-07_14_45_36.png

/usr/bingit を選択し、「開く」をクリックします。ここで、同じ階層に先程リンクしたgit-secrets も確認できます。

環境設定の画面に戻るとシステムのGitが選択されていることがわかります。

スクリーンショット_2017-02-07_14_45_41.png

これで、Gitをプッシュし直すとエラー無しでプッシュすることが出来ました。

まとめ

ただリンクするにも意外とやることがあったので、簡単にまとめてみました。

37
33
2

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
37
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?