私はそうは思いません(たとえば、「GIT:非現在のブランチへのローカル変更の追加」で説明されているように、タイムスタンプが変更されています)。
最も簡単な方法は、IDEを自動的に更新するように構成することです。
たとえばEclipseの場合、これは「アクセス時に更新」の設定になります。
別のアプローチは、別のローカルリポジトリ(ローカルの変更がこれまでにないため、隠しておく必要がないリポジトリ)を保持することです。
pre-commitフックは現在のリポジトリに残ります。
フックは現在のインデックス(追加したもの)を使用しますが、他のワークツリーリポジトリを使用します。
そのためには、次のことをコミットする必要があります。
git commit --work-tree=/path/to/other/local/repo -m "my commit message"
フックが失敗しない場合は、コミット後のフック(現在のリポジトリに残っている)を他のリポジトリに移動し、現在のブランチをプルして、その(元の)作業ツリーを更新することができます。
cd /path/to/other/local/repo
git --work-tree=/path/to/other/local/repo --git-dir=/path/to/other/local/repo/.git pull
(正しく機能するために、最初のリポジトリにあるフックが2番目のリポジトリを指定する必要があることに注意してくださいwork-tree
) 。
これは、作業中の現在のブランチを考慮していないため、単純化された提案です(1つのブランチ「マスター」のみを想定しています)。
ただし、ブランチを検出し、そこからフックを適応させることができます(適切なチェックアウトと適切なブランチへの切り替えを使用)。git-dir
作業ツリーの2番目のリポジトリ更新後(最初のリポジトリのコミット後フックによる)、その2番目のリポジトリは、(最初のリポジトリと現在のリポジトリの)コミット前フックが使用できる元の作業ツリーとして機能する準備ができています。安全に動作します。