3
1

More than 1 year has passed since last update.

SourceTreeでpre-commit hookが失敗する時の対処法

Last updated at Posted at 2022-12-20

先に結論だけ

macOSのSourceTreeでpre-commitに関する問題が発生したら、SourceTreeの設定を内蔵GitからSystem Gitへ切り替えてください。

はじめに

この記事は、SourceTreeでのコミット時に、pre-commitフックが失敗する問題の記録、および対処方法を共有するためのものです。

対象とする環境

  • macOS 12.6.1
  • SourceTree v4.2.1 (248)
  • git version 2.39.0

対象とする読者

  • Gitを使っている
  • SourceTreeを使っている

各ツールのインストールガイドなどは、それぞれの公式ドキュメントをご参照ください。

問題の詳細

Gitのpre-commitフックを設定し、SourceTreeからコミットすると、pre-commitフック内のnode.jsに関連するコマンドが実行できずに失敗します。

.git/hooks/pre-commit: line 2: npx: command not found

pre-commitフックを手動で製作しても、自動生成するツールを使ってもSourceTreeからコミットする場合同じ問題が発生します。

ターミナルからコミットする場合はこの問題が発生しません。また、VSCodeやWebStormなどのアプリケーションからコミットしても問題は発生しません。SourceTreeからコミットする場合のみ、この問題が発生します。

対処法

この問題は、SourceTreeがGitを内蔵しているために発生します。内蔵Gitからは外部コマンドのパスが通っていないため、フックの実行に失敗します。

Gitのインストール先を確認する

ターミナルを開き、以下のコマンドでインストール済みのgitのバージョンとインストール場所を確認します。

% git --version   
git version 2.39.0
% which git       
/usr/local/bin/git

SourceTreeの内蔵Gitから、System Gitに切り替える

SourceTreeの環境設定を開きます。

「Git」設定タブを開き「Gitのバージョン」内の「システムのGitを使用する」ボタンを押します。

which gitコマンドで確認したパスの通りに、ファイル選択ダイアログでgitを選択します。

Gitのインストール先は環境によって異なります。

  • macOS内蔵のGitを使っている
  • homebrewでインストールしたGitを使っている
  • M1 macでhomebrewを使いインストールしたGitを使っている

これらの場合でGitのインストール先が異なります。必ずwhich gitコマンドでご自身が使用してるGitのインストール先を確認してください。

以上、ありがとうございました。

参考記事

3
1
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
3
1