Ich habe ein Repo Ich fügte ein gitattributes
hinzu und arbeitete daran gut. Ich synchronisiere es via Dropbox mit einem anderen Rechner. Als ich es auf die andere Maschine öffnete, erschien plötzlich eine Reihe von Dateien auf dem nicht gesicherten Bereich als total diffs (die ganze Datei ein riesiges diff, was Zeilenendungen diff bedeutet) - meine crlf-Endungen sind im Grunde .* text=auto
und ich arbeite an Windows. Ich habe versucht, die Änderungen zu speichern, den Zweig neu zu setzen usw. Schließlich entschied ich, die Dateien zu committen und machte dann einige andere Commits, die ich neu ordnen wollte (und Squash), bevor die Zeilenenden committen. Wenn ich Rebasieren versuchen bekomme ich ein:git line endings - kann nicht verstauen, zurücksetzen und kann jetzt nicht über falsche Zeilenenden rebit commit
error: Your local changes to the following files would be overwritten by merge
# those same files
Please, commit your changes or stash them before you can merge.
Aborting
Could not apply 89b25b81fff1a1e7893319e123aaaca9c4162a95... <commit message>
Natürlich Stash funktioniert nicht
Ist es ein Fehler?
Verwandte:
- How do I fix line ending issues after migrating from SVN to git? (ja ich bin ein git-svn Klon, aber ich glaube nicht, dass es wirklich wichtig ist)
- Can't seem to discard changes in Git (yep, und ich will warum wissen)
- git thinks files have changed
- Can someone explain to me what difference git diff is seeing here?
EDIT Nichts mit Maschinen zu tun - auf der gleichen Maschine einige (...) Operationen machen nur diese Dateien (sie sind auf der .gitattributes
als Text) erscheinen im Abschnitt "geändert". Die einzige Lösung, die zu existieren scheint, ist:
git rm --cached -r .
git reset --hard
SORGFÄLTIG
EDIT: Hack oben alias Status bewegt:
[alias]
crlf = !git rm -r . --cached -q && git reset --hard
UPDATE 2015.09.30: Ich habe Ein Git Repo in einer NTFS-Partition, die ich von Windows 7 und Arch Linux in einer Dual-Boot-Umgebung verwende. Wenn ich windows herunter und boote ich in Arch zwei Dateien (html) zeigen als total diffs (line end diffs). Die obige Problemumgehung funktioniert nicht - es sei denn, Sie es mehrmals Auffrischen der gui dazwischen ...
Meine .gitattributes
gelten:
* text=auto
*.py text diff=python
*.html text
.project text
*.pkl -text
# M$ files
*.bat text eol=crlf
# UNIX files
**/generate_second_post text eol=lf
# git files - have them with LF, as I edit them via the shell (echo etc)
*.gitignore text eol=lf
*.gitattributes text eol=lf
NB: Linux lässt mich verpflichten, Schalter Äste usw., aber gewonnen Lass mich nicht zurücklegen - und diese Diffs erscheinen immer in gitk/git gui.
Haben Sie das versucht? 'git add -u.; git reset; ' –
@ SzerémiAttila: hast du es in meinem Szenario versucht und es funktioniert? Was soll das tun? –
Fügt alle überwachten Dateien zum Index hinzu und entfernt sie dann mit dem Index, wobei alle Änderungen in Ihren Dateien beibehalten werden. Ich habe das schon früher in einer ähnlichen Situation gemacht und Git wurde klar, dass sich nichts wirklich verändert hat, was die Probleme der Zeilenenden verschwinden lässt. Und ich habe bereits eine Frage wie diese zuvor mit der gleichen Antwort beantwortet: http://stackoverflow.com/questions/10890380/git-thinks-files-have-changed/11258263 –