torek が述べたように、おそらくこれはやりたくないでしょう。オペレーティング システム間でリポジトリを共有することは、一般的には良い考えではありません。
ただし、Windows と Windows Subsystem for Linux の間でリポジトリを共有できるのと同じように、それは可能です。 core.checkStat
を設定してみてください。 minimal
まで 、それで十分でない場合は core.trustctime
false
まで .これにより、インデックスに格納される情報量が最小限に抑えられます。つまり、データは可能な限り移植可能になります。
ただし、リポジトリにシンボリック リンクがある場合は、何をしても更新が妨げられない可能性が高いことに注意してください。 Linux は通常、シンボリック リンクの長さをバイト単位であると見なし、Windows は 1 つまたは複数のディスク ブロックを使用すると見なすため、オペレーティング システム間でサイズの不一致が生じます。サイズは無効にできないインデックスで使用される属性の 1 つであるため、これは避けられません。
あなたはここで完全に正しいです:
-
ここで使用しているもの。Git はさまざまに index と呼んでいます 、ステージング エリア 、またはキャッシュ 、実際にはキャッシュ データが含まれています。
-
そこに含まれるキャッシュ データは、システム コールの結果です。
-
Linux システムによって返されるシステム コール データは異なる Windows システムによって返されたシステム コール データから。
したがって、OS 切り替えはすべてのキャッシュ データを完全に無効にします。
<ブロック引用>...別のシステムのインデックス ファイルを設定するにはどうすればよいですか?
ここでの最善の策は、これをまったく行わないことです。 2 つの異なる作業ツリー、または 2 つの異なるリポジトリを作成します。しかし、それが他の方法よりも難しい場合は、次のアイデアを試してください:
Git が使用する実際のインデックス ファイルは、単にデフォルトに設定されています .git/index
. 異なるを指定できます GIT_INDEX_FILE
を設定してファイル 他の (相対または絶対) パスへ。したがって、.git/index-linux
を持つことができます と .git/index-windows
、および設定 GIT_INDEX_FILE
使用している OS に基づいています。
一部の Git コマンドは、一時インデックスを使用します。 GIT_INDEX_FILE
を設定することでこれを行います 彼ら自身。 そうでない場合 -後で設定すると、誤って .git/index
を使用する可能性があります この時点で。別のオプションは、名前を変更することです .git/index
OSの切り替え時に邪魔になりません。 .git/index-windows
をキープ と .git/index-linux
前と同じですが、使用中の名前を .git/index
に変更します 使用中は、名前を .git/index-name
に変更します 他のシステムに切り替える前に。
繰り返しますが、これらの方法を試すことはお勧めしませんが、多かれ少なかれ機能する可能性があります。