2016-06-07 6 views
1

Nach dem Auschecken eines Zweigs (Master) und git pull, habe ich zwei Dateien als geändert, die ich nicht loswerden kann.kann nicht ungeschützte Dateien in git auf meinem lokalen loswerden

Ich habe versucht, alles (git stash, git checkout ., git reset, git reset --hard, git reset --hard HEAD).

Auch nach dem erneuten Löschen und Klonen des Projekts werden unter git status immer die Dateien angezeigt.

Was kann ich tun? Dies ist das Ergebnis des git status:

Mahans-MacBook-Pro:finance-service-platform Mahan$ git status 
On branch master 
Your branch is up-to-date with 'origin/master'. 
Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

    modified: tests/Mocks/Models/CarInsurance/PackageMock.php 
    modified: tests/mocks/Models/CarInsurance/CarSubmodelMock.php 

no changes added to commit (use "git add" and/or "git commit -a") 

dies ist auch mein .gitignore Inhalt:

/vendor 
.env 
apidoc.json 
docs/* 
.phpintel/ 
.idea 
+1

Zeigen Sie uns die Ausgabe von 'git status'. Vielleicht hilft 'git clean'. Oder geh einfach den manuellen Weg 'rm file'. –

+0

Können Sie die Ausgabe von mindestens ein paar dieser Befehle liefern, gibt es ein paar Dinge, die hier ablaufen könnten, und wir brauchen ein bisschen mehr Info –

+0

Auch wenn Sie ein .gitignore haben, bitte posten Sie den Inhalt Ihres gitignore Datei –

Antwort

1

denke ich, das Problem hier ist, dass Sie ein verwenden Groß- und Kleinschreibung (aber Case-Erhaltung) Dateisystem, auf dem Mac, während Git Groß-und Kleinschreibung.

Dies bedeutet, dass es im Git Repo möglich ist, Dateien zu haben, deren (Pfad-) Namen sich nur in Groß- und Kleinschreibung unterscheiden, aber nicht im Dateisystem. Das Ergebnis davon ist, dass, wenn Sie einen Commit auschecken, eine dieser Dateien unweigerlich die andere überschreibt, und wenn die Dateien nicht identisch sind, wird git die immer modifizierte Dateien in der Kasse sehen.

Die Lösung ist nicht, dies zu tun: nie haben Dateien, deren Namen nur in Fall unterscheiden, wenn Sie möglicherweise eine Groß-und Kleinschreibung nicht-Dateisystem verwenden müssen.

das Problem zu beheben:

  1. Klon die Repo auf ein System mit einem Fall sensible Dateisystem (Linux oder anderes traditionelles Unix-Dateisystem: Windows nicht, nicht OSX mit Standard-Mount-Optionen);
  2. Finden Sie die anstößigen Dateien (git ls-files ist Ihr Freund hier);
  3. das Problem irgendwie lösen, die Änderungen festschreiben und drücken;
  4. Gewinn.

Es können Optionen sein git es solche Probleme in hilfreicher Weise erkennen zu machen: Ich weiß nicht, was sie sind, wenn so.

+0

Ich denke, ich habe das gleiche getan, aber auf andere Weise, aber am Ende war das Ergebnis in Ordnung :) danke dafür;) – Mahan

0

i die Answare gefunden. Danke an @tfb Ich begehe gerade die neuen Änderungen, die git gefragt hat und nachdem ich die Tests ausgeführt habe, war alles ok und grün, dann habe ich gedrängt zu meistern. aber wieder hatte ich das gleiche Problem, aber dieses Mal, wenn ich laufe die git stash für einmal und dann git pull es meine geholt neue begehen und jetzt ist es ok

0

Meine beste Wette ist ein sehr häufiges Problem mit git, die meist angezeigt, wenn das gleiche Repository auf PC und Mac/Linux mit:

Irgendwie jemand wahrscheinlich zweimal diese Dateien begangen. Da Windows nicht auf Groß-/Kleinschreibung angewiesen ist, wenn es sich um ein Dateisystem handelt, können die Dateien mehrfach mit unterschiedlicher Groß-/Kleinschreibung übergeben werden.

Dies treibt Git verrückt, und die ersten zu leiden sind Mac/Linux-Benutzer, die die zwei verschiedenen Großbuchstaben sehen, eine jedes Mal. Git speichert die Änderungen für die zwei Versionen des Dateinamens im selben Feld, zeigt jedoch jede Version der Datei separat auf Mac/Linux an.

Um dieses Problem zu beheben, empfiehlt es sich, die richtige Version der Datei zu sichern und sie mit git rm zu entfernen. Dann begehe die Entfernung. Git zeigt die Datei erneut an (normalerweise mit unterschiedlicher Großschreibung), entfernt auch die zweite Instanz, bis keine Änderung der Datei angezeigt wird, und die Datei nicht im Repository vorhanden ist.

Dann erstellen Sie die Datei neu (beachten Sie die korrekte Groß-/Kleinschreibung) und fügen Sie sie unter Verwendung von git add dem Repo hinzu und drücken Sie die Änderung. Stellen Sie sicher, dass alle Benutzer, die das Problem noch immer haben, den Repo erneut klonen, nachdem dies geschehen ist.

Verwandte Themen