Wie Torek erwähnt hat, möchten Sie dies wahrscheinlich nicht tun. Es ist im Allgemeinen keine gute Idee, ein Repo zwischen Betriebssystemen zu teilen.
Es ist jedoch möglich, ähnlich wie es möglich ist, ein Repo zwischen Windows und dem Windows-Subsystem für Linux zu teilen. Sie können versuchen, core.checkStat
einzustellen bis minimal
, und wenn das nicht ausreicht, core.trustctime
bis false
. Das führt dazu, dass die minimale Menge an Informationen im Index gespeichert wird, was bedeutet, dass die Daten so portabel wie möglich sind.
Beachten Sie jedoch, dass, wenn Ihr Repository symbolische Links enthält, es wahrscheinlich ist, dass nichts, was Sie tun, Aktualisierungen verhindern wird. Linux betrachtet die Länge eines Symlinks normalerweise als seine Länge in Bytes, und Windows betrachtet es als einen oder mehrere Festplattenblöcke, sodass es zu Größenunterschieden zwischen den Betriebssystemen kommt. Dies lässt sich nicht vermeiden, da die Größe eines der Attribute ist, die im Index verwendet werden und nicht deaktiviert werden können.
Hier sind Sie vollkommen richtig:
-
Das Ding, das Sie hier verwenden, das Git auf unterschiedliche Weise den Index nennt , der Bereitstellungsbereich , oder den Cache , enthält tatsächlich Cache-Daten.
-
Die darin enthaltenen Cache-Daten sind das Ergebnis von Systemaufrufen.
-
Die von einem Linux-System zurückgegebenen Systemaufrufdaten sind anders aus den von einem Windows-System zurückgegebenen Systemaufrufdaten.
Daher macht ein Wechsel des Betriebssystems alle Cache-Daten vollständig ungültig.
... wie kann ich die Indexdatei für verschiedene Systeme setzen?
Ihre beste Wette hier ist, dies überhaupt nicht zu tun. Erstellen Sie zwei verschiedene Arbeitsbäume oder vielleicht sogar zwei verschiedene Repositories. Aber wenn das schmerzhafter ist als diese andere Alternative, probieren Sie diese Ideen aus:
Die eigentliche Indexdatei, die Git verwendet, ist lediglich standardmäßig .git/index
. Sie können einen anderen angeben Datei durch Setzen von GIT_INDEX_FILE
zu einem anderen (relativen oder absoluten) Pfad. Sie könnten also .git/index-linux
haben und .git/index-windows
, und setzen Sie GIT_INDEX_FILE
basierend auf dem Betriebssystem, das Sie verwenden.
Einige Git-Befehle verwenden einen temporären Index. Sie tun dies, indem sie GIT_INDEX_FILE
setzen sich. Wenn sie un - setzen Sie es später, sie könnten versehentlich .git/index
verwenden an dieser Stelle. Eine weitere Option ist also das Umbenennen .git/index
aus dem Weg, wenn Betriebssysteme gewechselt werden. Behalten Sie eine .git/index-windows
bei und .git/index-linux
wie zuvor, aber benennen Sie den verwendeten um in .git/index
während es verwendet wird, dann benennen Sie es in .git/index-name
um bevor Sie zum anderen System wechseln.
Auch hier empfehle ich nicht, eine dieser Methoden auszuprobieren, aber sie werden wahrscheinlich mehr oder weniger funktionieren.