Mir fällt es schwer, ein paar Git / DCVS-Konzepte zu verstehen. Hier ist was passiert ist:
git checkout master
zu meinem Masterzweig zu wechseln.
Mein Verständnis von DCVS ist, dass ich Verzweigungen nach Belieben wechseln kann, auch wenn einige Zweige mehr oder weniger Dateien als die anderen haben, solange ich meine Dateien festlege. Ich habe versucht, mit git commit -a
zu committen und zum Masterzweig zu wechseln, aber ich habe den gleichen Fehler.
Als Randnotiz warne ich, dass LF durch CRLF ersetzt wird, und warnt mich vor einigen nachlaufenden Leerzeichen. nach dem Commit mache ich ein git status
und ein paar Dateien erscheinen immer als #modified ...
.
Hat das etwas mit git / windows zu tun, oder verstehe ich nicht richtig, was passiert ist? Ich möchte einfach zu meinem Master-Zweig wechseln ohne meine Änderungen zu verlieren in dem anderen Zweig.
Ich habe das Problem gelöst hacking meine Pre-Commit Hook (kommentieren diese Zeilen in .git/hooks/pre-commit
mit einem #
):
Nachschlagen von Git-Stash zum Ändern von Zweigen, während im aktuellen Zweig noch ungespeicherte Änderungen vorhanden sind.
Sie haben Recht, wenn Sie darüber nachdenken, wie das funktionieren soll.
Es hört sich jedoch so an, als ob git Probleme mit den Zeilenenden hat und denkt, dass alle Ihre Dateien geändert werden, auch wenn dies nicht der Fall ist. Ich verwende git nicht unter Windows, aber ich wollte die Option "core.autocrlf" vorschlagen, damit die crlf-Handhabung funktioniert. Der folgende Blogeintrag weist jedoch darauf hin, dass dies möglicherweise keine gute Idee ist: Ссылка
Verwenden Sie einfach die folgende Option in der .gitconfig-Datei, die sich in Ihrem Benutzerverzeichnis befindet.
[Kern] autocrlf = true
Und es wird das Problem lösen.