4

背景: 私はプレコミット ツールに取り組んでいます。開発者として、別の開発者のブランチを引っ張ってきて、自分が触れていないファイルについて pre-commit フックが大声で文句を言うのは、かなりイライラすることがあります。

私の実装でできるようにしたいのは、マージコミットの場合、競合しているファイルまたはマージ競合中にローカルで手動で編集したファイルに対してのみフックを実行することです

私がこれまでに試したこと:

  • git diff --staged- これは現在のソリューションの動作であり、正常にマージされたファイルを含むすべてのファイルが含まれているため、正しくありません。
  • git diff MERGE_HEAD- これはかなり近いですが、マージするブランチが master からブランチされた場合これにはまだマージしていない master からのすべての変更が含まれます。
  • .git/MERGE_MSG競合するファイルのリストが含まれています。これは良い出発点のように思えますが、ローカルで編集されたファイルは含まれていません。
  • をコミットした後git show --name-only私が望むものを正確に取得します。しかし、それでは遅すぎます(結局、事前コミットを実装しています:D)
4

2 に答える 2