Git - Umschalten zwischen Zweigen (Fenstern) und nicht ausgeführten Änderungen

8

Mir fällt es schwer, ein paar Git / DCVS-Konzepte zu verstehen. Hier ist was passiert ist:

  1. Ich habe ein git-Projekt erstellt und es aus einem SVN-Repository importiert
  2. Ich habe ein paar Commits gemacht
  3. Ich wollte etwas experimentieren, also habe ich einen Zweig namens constants-update erstellt
  4. Ich habe zu constants-update Zweig gewechselt, einige Dateien verschoben, andere gelöscht und viel mehr hinzugefügt
  5. Ich habe mich diesem Zweig verschrieben
  6. Jetzt versuche ich mit git checkout master zu meinem Masterzweig zu wechseln.
  7. Ich habe diesen Fehler: Fehler: Sie haben lokale Änderungen an "src / groovy / Constants.groovy"; Zweige können nicht gewechselt werden.

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.

    
Miguel Ping 03.11.2008, 02:29
quelle

4 Antworten

4

Ich habe das Problem gelöst hacking meine Pre-Commit Hook (kommentieren diese Zeilen in .git/hooks/pre-commit mit einem # ):

%Vor%     
Miguel Ping 03.11.2008, 10:38
quelle
4

Nachschlagen von Git-Stash zum Ändern von Zweigen, während im aktuellen Zweig noch ungespeicherte Änderungen vorhanden sind.

    
Grant Limberg 03.11.2008 02:47
quelle
4

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: Ссылка

    
Greg Hewgill 03.11.2008 02:48
quelle
2

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.

    
Autodidact 29.01.2009 05:23
quelle

Tags und Links