Wenn der neue Zweig Änderungen enthält, die sich von dem aktuellen Zweig für diese spezielle geänderte Datei unterscheiden, wird es Ihnen nicht ermöglichen, Zweige zu wechseln, bis die Änderung übernommen oder gestasht ist. Wenn die geänderte Datei auf beiden Zweigen gleich ist (das heißt, die übernommene Version dieser Datei), können Sie frei wechseln.
Beispiel:
$ echo 'hallo Welt' > file.txt
$ git add file.txt
$ git commit -m "file.txt hinzufügen"
$ git checkout -b experiment
$ echo 'auf Wiedersehen Welt' >> file.txt
$ git add file.txt
$ git commit -m "Text hinzugefügt"
# experiment enthält nun Änderungen, die master nicht hat
# jede zukünftige Änderung an dieser Datei wird Sie daran hindern, Zweige zu wechseln
# bis die Änderungen gestasht oder übernommen sind
$ echo "und wir sind zurück" >> file.txt # zusätzliche Änderungen machen
$ git checkout master
Fehler: Ihre lokalen Änderungen an den folgenden Dateien würden beim Checkout überschrieben:
file.txt
Bitte übernehmen Sie Ihre Änderungen oder stashen Sie diese, bevor Sie die Zweige wechseln können.
Abbruch
Dies gilt sowohl für unverfolgte Dateien als auch für verfolgte Dateien. Hier ist ein Beispiel für eine unverfolgte Datei.
Beispiel:
$ git checkout -b experimentell # erstellt neuer Zweig 'experimentell'
$ echo 'hallo Welt' > file.txt
$ git add file.txt
$ git commit -m "file.txt hinzugefügt"
$ git checkout master # master hat file.txt nicht
$ echo 'auf Wiedersehen Welt' > file.txt
$ git checkout experimentell
Fehler: Die folgenden unverfolgten Arbeitsdateien würden beim Checkout überschrieben:
file.txt
Bitte verschieben oder entfernen Sie sie, bevor Sie die Zweige wechseln können.
Abbruch
Ein gutes Beispiel dafür, warum Sie zwischen Zweigen wechseln möchten, während Sie Änderungen vornehmen, wäre, wenn Sie Experimente auf Master durchführen, diese aber noch nicht auf Master übernehmen möchten...
$ echo 'experimentelle Änderung' >> file.txt # Änderung an vorhandener verfolgter Datei
# Ich möchte diese speichern, aber nicht auf Master
$ git checkout -b experiment
M file.txt
Zweig 'experiment' gewechselt
$ git add file.txt
$ git commit -m "mögliche Änderung für file.txt"