Ich habe ein Projekt mit bestimmten JS-Dateien, die ich nicht aktualisieren kann. Ich führe OSX lokal aus und mein Remote- / Staging-Server ist Linux (CentOS).
Gleich nachdem ich mein Projekt lokal geklont hatte, bemerkte ich, dass ich all diese Dateien mit Git-Status habe modified
. Ich habe sie nie modifiziert, also habe ich es versucht discard changes
oder reset
sie, aber sie tauchen wieder auf. Die Änderung in der Änderung besteht darin, alle Zeilen zu löschen und erneut hinzuzufügen.
Ich bin mir nicht sicher, warum dies passiert oder wie ich es beheben kann, damit mein Git-Status sauber ist, wie er sein muss.
Hier sind ein paar Zeilen aus dem Git-Status:
# modified: app/webroot/js/ckeditor/plugins/devtools/lang/el.js
# modified: app/webroot/js/ckeditor/plugins/devtools/lang/fa.js
# modified: app/webroot/js/ckeditor/plugins/devtools/lang/gu.js
UPDATE 1:
Ich habe es jetzt geschafft, die oben genannten Dateien festzuschreiben, aber der Staging-Server ist gesperrt, da keine neuen Änderungen vorgenommen werden:
error: Your local changes to the following files would be overwritten by merge:
app/webroot/js/ckeditor/_source/lang/ar.js
app/webroot/js/ckeditor/_source/lang/bg.js
app/webroot/js/ckeditor/_source/lang/bn.js
app/webroot/js/ckeditor/_source/lang/cs.js
...
Aborting
Ich kann nicht festschreiben / pushen, weil:
Updates were rejected because a pushed branch tip is behind its remote counterpart
Ich habe es versucht:
git reset --hard
und
git stash
git stash drop
Aber sie funktionieren nicht, nichts passiert.
UPDATE 2:
git diff
gibt mir:
The file will have its original line endings in your working directory.
warning: CRLF will be replaced by LF in app/webroot/js/ckeditor/_source/lang/fa.js.
The file will have its original line endings in your working directory.
warning: CRLF will be replaced by LF in app/webroot/js/ckeditor/_source/lang/gu.js.
The file will have its original line endings in your working directory.
...
quelle
Antworten:
Zeilenenden normalisieren
Dies liegt daran, dass die Zeilenumbrüche zwischen den festgeschriebenen Dateien und den Dateien auf der Festplatte geändert werden.
Github hat eine praktische Seite, auf der detailliert beschrieben wird, wie Sie mit dieser Art von Problem umgehen können. Kurz gesagt (für Linux / OSX) müssen Sie zunächst Ihre Git-Konfiguration so ändern, dass die Zeilenenden für Sie sortiert werden:
Übernehmen Sie dann die Normalisierung der Zeilenenden:
Und dann sollten Zeilenenden korrekt behandelt werden. Weitere Informationen finden Sie auf der Hilfeseite von github oder im entsprechenden Abschnitt der Formatierung und des Leerzeichens der Git-Dokumente .
Lösen von Linux-Maschinenkonflikten
Die Fehlermeldung lautet "Ihre lokalen Änderungen an den folgenden Dateien würden durch Zusammenführen überschrieben:". Dies bedeutet, dass sie lokale Änderungen enthalten, die entweder festgeschrieben oder verworfen werden sollten, bevor Sie fortfahren. Unter der Annahme einer normalen Nutzung des Staging-Servers (er hat keine absichtlichen Änderungen) können die lokalen Änderungen verworfen werden. Gehen Sie zum Beispiel wie folgt vor:
Dadurch wird der Repository-Verlauf abgerufen, ohne die Arbeitskopie zu aktualisieren, und anschließend so aktualisiert, dass er genau mit dem Hauptzweig im Repository übereinstimmt. Beachten Sie, dass der letzte Befehl alle nicht festgeschriebenen Änderungen verwirft.
quelle
Ich habe immer erwähnt, dass Sie sicherstellen müssen, dass Ihr eingestellt
core.autocrlf
istfalse
, wie in " Git: Repo mit Stash nach CRLF-Normalisierung stecken? "Stellen Sie außerdem sicher, dass Sie keine
.gitattributes
Datei miteol
Anweisungen haben, die versuchen würden, das Zeilenende zu konvertieren.Die Grundidee lautet: Wird diese Fehlermeldung immer noch angezeigt, wenn Sie sicherstellen, dass keine automatische Konvertierung erfolgt?
Beachten Sie jedoch für alle Fälle auch " Git-Rebase schlägt fehl. 'Ihre lokalen Änderungen an den folgenden Dateien werden durch Zusammenführen überschrieben. Keine lokalen Änderungen? "
quelle
Ich habe gerade 2 Stunden (!) Mit einer .svg-Datei (Scalar Vector Graphics) verbracht, die sich nach dem Zurücksetzen ohne mein Eingreifen ständig geändert hat .
Die Datei wird also als "Git-Status" geändert angezeigt . das Zurücksetzen ist erfolgreich, aber es ändert sich ständig, so dass das "Ziehen" immer wieder fehlschlägt ... so nervig!
Kein Glück mit 'git reset' , 'git ignore' , 'git untrack' etc ...
Schließlich habe ich es gelöst, indem ich die Datei von meinem lokalen System entfernt habe (nicht 'git delete' , sondern nur Shift + Delete) >> jetzt wird die 'Pull'- Anforderung übergeben und die Datei wird aus dem Remote-Repository abgerufen.
So einfach, ich könnte weinen!
quelle
Dieses Problem tauchte wiederholt im Roll20-Repository für Zeichenblätter auf einem Ubuntu-Computer auf, und ich konnte es durch lösen
Damit wurde das Problem heute nicht mehr vollständig gelöst, und als ich mich in Stack Overflow umsah, stellte ich fest, dass der Schuldige ihre
.gitattributes
Akte war:Nach dem
git pull origin master
,git status
zurückgegeben:Die Lösung bestand darin, die
* text=auto
Zeile aus den .gitattributes zu entfernen :Die Änderungen an
.gitattributes
können verworfen werden und Git wird weiterhin zufrieden sein.Bearbeiten + 1d : Der "Trick" von .gitattributes wurde heute erneut ausgeführt, jedoch nicht,
git status
bevor die Änderungen von .gitattributes verworfen wurden. Ohne einen für mich offensichtlichen Grund (vielleicht Caching vongit status
?) Gab eingit status
später dies wieder zurück:Wiederholen, aber
git status
dazwischen funktioniert.quelle