インデックス ファイルはランダムに変更されるべきではありません。これがステージング ツリーであり、コミットのリポジトリと作業ツリーの間のバッファーです。効率化のために、作業ツリー (変更可能なチェックアウト済みファイル) に関するいくつかのメタデータも保存しstatus
ますdiff
。そのような情報がどのような種類で保存されているかを確認するには、 を実行してみてくださいgit ls-files --debug
。これにより、ファイルとディレクトリごとに次のように出力されます。
path/to/file
ctime: 1332898839:873326227
mtime: 1332898839:873326227
dev: 2052 ino: 4356685
uid: 1000 gid: 100
size: 3065 flags: 6c
そのため、ファイルがディスク上で何らかの方法で変更された場合、そのコンテンツとしてではなく、使用している i ノードなどの内部的なものが変更された場合、index
次にインデックスが使用されたときにファイルの更新がトリガーされます。
git branch
.git/HEAD
は、ファイルとファイル.git/refs/heads
のみをチェックするため、インデックスを更新しませ.git/packed-refs
ん。インデックスや作業ツリーは気にしません。一方、インデックスを操作しますgit diff
。git status
実験を行いました: 現在のindex
ファイルをコピーし、ファイルの新しいバージョンを作成して、新しい inode がそれに割り当てられるように (コピー、元のファイルを削除し、コピーの名前を元の名前に戻します)、実行git status
し、次に新しいインデックス ファイルを元のコピーと比較しました。2 つの点が変更されました: 影響を受けるファイルを含む行と、変更はファイル名の直前のバイトと、インデックス ファイルの最後の数バイト (おそらく最後のインデックス計算のタイムスタンプ) にありました。ファイル全体のサイズは変わりません。
問題に戻ると、自分でインデックスにアクセスするコマンドを実行していない場合は、それを実行する別のツールがある可能性があります。それは、IDE プラグインまたは Git リポジトリを認識し、ステータスをチェックするファイル ブラウザー拡張機能です。 git リポジトリの。または、ディスク デフラグ ユーティリティのように、ファイルがディスクに保存される方法を変更する別のプロセスがあります。