pre-commit
フックが実行されると、リポジトリがクリーンでない可能性があります。したがって、単純にテストを実行すると、コミットしているものに反するのではなく、作業ツリーにあるものに反することになります。
やるべきことは明らかgit stash --keep-index --include-untracked
で、 の最初とpre-commit
最後git pop
にあります。そうすれば、(純粋な) インデックスに対してテストを行うことができます。これが私たちが望んでいることです。
git add --patch
残念ながら、これを使用すると(特にハンクを編集する場合)マージ コンフリクト マーカーが生成されます。これstash@{0}
は、コミット後に の内容が作業ツリーと一致しない可能性があるためです。
もう 1 つの一般的な解決策は、リポジトリを複製し、新しい一時リポジトリでテストを実行することです。それには2つの問題があります:
- まだコミットしていないため、コミットしようとしている状態のリポジトリのコピーを簡単に取得することはできません。と
- たとえば、ローカル環境の構成が原因で、テストが現在の作業ディレクトリの場所に敏感になる場合があります。
git stash --keep-index --include-untracked
マージ競合マーカーを導入せず、 post-commit を変更せずに、作業ツリーを の前の状態に復元するにはどうすればよいHEAD
ですか?