GNU/Linux >> Linux の 問題 >  >> Linux

WindowsとLinuxを切り替えた後、gitはインデックスを強制的に更新します

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 に変更します 他のシステムに切り替える前に。

繰り返しますが、これらの方法を試すことはお勧めしませんが、多かれ少なかれ機能する可能性があります。


Linux
  1. Android と Linux の間で Wifi-Direct 接続をセットアップする方法

  2. OSX と Linux の間で使用するファイル システム

  3. Linux でのライブラリ呼び出しとシステム呼び出しの違いは何ですか?

  1. LinuxとWindows間でSAMBAサーバーを構成してファイルを転送する方法

  2. Windows – Qemu WindowsゲストとLinuxホスト間の共有フォルダー?

  3. Mac OS X と Linux 間のバイナリ互換性

  1. WindowsとLinuxの間にSSH接続を確立します

  2. LinuxとWindowsコンピューター間でファイルを共有する

  3. Linux – LinuxホストとWindowsゲスト間でファイルを共有しますか?