2016-06-21 4 views
3

Wenn ich versuche, git rm --cached zu verwenden, erhalte ich folgende Fehlermeldung:Datei Inszenierte Inhalt Verschiedenen von HEAD

error: the following file has staged content different from both the file and the HEAD: 

Ich weiß, dass ich diesen Fehler mit git rm --cached -f <filename> umgehen kann. Aber normalerweise, wenn ich Dateien mit git rm --cached auflöst, erhalte ich diesen Fehler nicht.

Meine Frage ist, was es bedeutet, dass die Datei verschiedene gestaffelte Inhalte von der HEAD hat.

+2

Das bedeutet, dass die Datei geändert wurde, in den Status "stage" verschoben wurde und sich der Inhalt nun von der HEAD-Version unterscheidet. – MaxZoom

Antwort

3

Tipischerweise erhalten Sie diesen Status, wenn Sie ein Objekt "inszeniert und modifiziert" haben, das heißt: es wurde zuerst modifiziert, dann wurde es inszeniert und dann wurde es wieder modifiziert.

Dieser Status muss mit Vorsicht behandelt werden, ansonsten führen Sie zu einem Missverständnis, wenn Sie jetzt einen Commit ausführen, da nur gestaffelte Änderungen übernommen werden (ja, selbst im gleichen Dateikontext werden nur gestufte Änderungen festgeschrieben) Nicht inszenierte Änderungen werden im Nicht-Staging-Bereich für ein zukünftiges Commit beibehalten (falls bereitgestellt).

+0

Okay, das macht viel Sinn. Ich hatte die Datei zu Git hinzugefügt und bearbeitet, während es inszeniert wurde. Danke für die Einsicht. –

1

Es gibt drei Orte (für Änderungen) im Wert zu unterscheiden:

  • in der Datei
  • Änderungen in der Datei, die Sie bereits akzeptiert haben, Teil der nächsten begehen, so genannten Szene gesetzt Änderungen werden
  • Änderungen in einer Datei, die festgeschrieben wurden.

Nur die ersten beiden Sache, wenn Sie Dateien bearbeiten und committen. Von den beiden (nicht gestaffelt vs inszeniert) zeigt Ihnen git status, welche Art von Änderung Sie haben.