gitのpre-commitフックを使用していくつかのルールを適用しようとしています。 git diff --name-only
を使用して、ステージングされていない変更されたファイルがないかどうかを確認したい場合は、コミットプロセスに失敗します。しかし、私のpre-commit
ファイルに:pre-commitフックのGitコマンドが正しい出力を返さない
#!/bin/bash
cd "$(git rev-parse --show-toplevel)"
pwd
test=$(git diff --name-only)
echo "Untracked files: $test"
exit 0
git diff --name-only
空の文字列を返します。シェルでそのコマンドを実行すると、ステージングされていないファイルが変更されたことがわかります。 sudo
を使用するようにコマンドを変更すると、正しく動作しているように見えますが、この問題はユーザーのアクセス許可に関連すると考えられます。しかしchmod u+x
またはさらにファイルを添付しているchmod 777
は結果に影響しないようです。
また、コマンドをテストするためにgit repoルートの中に同様のbashファイルを作成しました。これは期待どおりに動作します。
問題を再現できません。しかし、 'git diff -name-only'はインデックスを作業ツリーと比較するので、変更されたファイルを探します(あなたのテキストはあなたが望むものです)。これまではうまくいきましたが、あなたはそうしています: 'エコー"未トラッキング... "unstaged *ではなくuntracked *という単語があります。 – torek
@torek良いキャッチ、それはunstagedと言います。 – Bloodyaugust