2016-03-31 8 views
2

Ich habe zwei Dateien, die von Kleinbuchstaben in Großbuchstaben umbenannt wurden und das frustrierendste und verrückteste Ding von außerhalb des linken Feldes passiert ist. Git sieht nun ZWEI KOPIEN, eine mit dem Großbuchstaben und eine mit dem Kleinbuchstaben jeder Datei. Lassen Sie mich klarstellen: Es gibt keine solchen Kleinbuchstaben. Git sieht buchstäblich imaginäre Dateien.Git sieht imaginäre Dateien (Groß-/Kleinschreibung beachten)

Um eine Änderung an einer dieser Dateien zu begehen, muss ich "sowohl" die echte Datei als auch die imaginäre Datei festschreiben. Wenn versucht wird, eine nicht-gespeicherte Datei zu verwerfen, wird im umgekehrten Fall, z. Durch das Verwerfen von server.h wird Server.h mit der Umkehrung von Änderungen erstellt und umgekehrt, daher ist das Löschen unmöglich.

  • 2 Dateien
  • zunächst klein geschrieben (server.h, server.cpp)
  • in Groß umbenannt (Server.h, Server.cpp)
  • Git sieht nun zwei Kopien
    • "git status" ausgang:
      geändert: Server.h
      geändert: Server.cpp
      geändert: server.h < ---- (nicht existiert)
      geändert: server.cpp < ---- (nicht existiert)

Die doppelten Dateien server.h und server.cpp in Kleinbuchstaben existieren nicht, wie oben erwähnt.

Ich habe versucht, .git/config zu ändern, um die Groß- und Kleinschreibung zu ändern, was nichts ändert. Was könnte diese doppelten, imaginären Dateien noch verursachen?

Bearbeiten: Wie oben erwähnt, das Aktivieren oder Deaktivieren der Groß- und Kleinschreibung Einstellungen hat das Problem nicht gelöst, und der Versuch, eine der beiden Dateien zu entfernen, funktioniert nicht.

+0

Hallo. Deine Beschreibung ist irgendwie chaotisch. Können Sie die von Ihnen verwendeten Befehle und die Nachricht vom Git-Client zur Verfügung stellen? –

+1

Können Sie ein konkretes Beispiel dafür hinzufügen? I.e. Konsolenausgabe für eine Folge von Operationen, die zu dieser Verwirrung führt? –

Antwort

0

Ich denke, dies ist nur ein Ergebnis der allgemeinen Verwirrung, die beim Umbenennen von Dateien auftritt. Grundsätzlich müssen Sie in diesem Fall die Dateien "removed" (Kleinbuchstaben) und "added" (Großbuchstaben) git add.

Als Test, wenn Sie git add --all eingeben, sollten Sie ein Ergebnis wie "Umbenannt: server.h -> Server.h" erhalten. Wenn dies nicht der Fall ist, geben Sie einfach git reset HEAD . ein, um zu Ihrem vorherigen Zustand zurückzukehren.

Obwohl, wenn Sie kompliziertere Änderungen haben, als Sie in Ihrer Frage angeben, und Sie Angst haben, einige andere Änderungen zu verlieren, können Sie auch in den git stash Befehl schauen.

+1

Die Frage ist nicht, wie man die Dateien festlegt, die Frage ist, warum diese Phantomdateien in Git existieren, wenn sie nicht im Dateisystem existieren. – code9999

+0

Probieren Sie einfach Ihre Vorschläge, und git add nicht angezeigt "Umbenannt: ...", es zeigte, was ich in der Frage zeigen, und git reset HEAD entfernt nicht die Dual-Dateien.Ich weiß, dass ich beide Dateien hinzufügen muss, damit es funktioniert, ich frage einfach, warum das Phantom existiert. – code9999

+0

Ich entschuldige mich - ich missverstanden. Das ist in der Tat seltsam. Was passiert mit dir? Führe 'git diff' auf einer" imaginären "Datei aus? Wie vergleicht es mit dem Unterschied der "echten" Datei? –