git stoppt mit 'Your local changes would be overwritten by merge/checkout'? So rettest du deine Änderungen per commit oder stash, statt sie zu verlieren.
Aufwand:
ca. 10 Min.
Das Symptom
Du willst den Branch wechseln oder schnell git pull machen – und git bremst:
error: Your local changes to the following files would be overwritten by merge (oder by checkout), gefolgt von „Please commit your changes or stash
them before you switch branches“. Der Wechsel findet nicht statt.
Die „Layer 8“-Wahrheit
Das sieht aus wie eine Blockade, ist aber ein Rettungsanker. git hat gemerkt,
dass du an genau den Dateien gearbeitet hast, die der Pull oder Branchwechsel
gleich überschreiben würde – und weigert sich, deine ungespeicherte Arbeit
kommentarlos zu vernichten. Es zwingt dich zu einer bewussten Entscheidung, statt
sie dir abzunehmen. Der Panikreflex, mit Gewalt (checkout --force, reset --hard) drüberzufahren, ist genau der, der die Arbeit tatsächlich kostet. Der
ruhige Weg hat nur zwei Varianten: Ist der Stand fertig, committe ihn; ist er es
nicht, leg ihn per stash kurz beiseite. In beiden Fällen bleibt nichts auf der
Strecke.
Die echte, verifizierte Lösung
1000 % faktenbasiert. Jeder Befehl ist real, jeder Pfad existiert. Schritt für Schritt:
1.
Ansehen, was überhaupt geändert ist
Zuerst verschaffst du dir Überblick, welche Dateien betroffen sind und was sich geändert hat. Erst dann entscheidest du: behalten oder verwerfen.
git status
git diff
2.
Fertige Änderungen committen
Sind die Änderungen sinnvoll und abgeschlossen, hältst du sie fest. Danach läuft der Wechsel oder Pull ohne Konflikt durch:
git add .
git commit -m "Beschreibung der Änderung"
3.
Unfertige Änderungen zwischenlagern
Willst du sie behalten, aber noch nicht committen, legst du sie beiseite, führst die Aktion aus und holst sie danach zurück:
git stash
git pull
git stash pop
4.
Änderungen bewusst verwerfen
Nur wenn die lokalen Änderungen wirklich überflüssig sind, gezielt zurücksetzen. Das ist unwiderruflich – also erst nach dem Blick in git diff:
git restore <datei>
5.
Konflikte nach stash pop auflösen
Kollidieren die zurückgeholten Änderungen mit dem neuen Stand, markiert git die Stellen in den Dateien. Diese von Hand bereinigen, dann normal weiterarbeiten – dein Zwischenstand ist nicht verloren.
Häufige Fragen (FAQ)
?Warum blockiert git den Wechsel oder Pull?
Du hast lokale, noch nicht committete Änderungen an Dateien, die der Wechsel (checkout) oder das Zusammenführen (merge/pull) ebenfalls verändern würde. git weigert sich, deine Arbeit einfach zu überschreiben, und fordert dich auf, sie vorher zu sichern – entweder per commit oder stash.
?Was ist der Unterschied zwischen commit und stash?
commit hält deine Änderungen dauerhaft in der History fest – richtig, wenn sie fertig genug sind. stash legt sie vorübergehend beiseite und macht das Arbeitsverzeichnis sauber, sodass du pullen oder den Branch wechseln kannst; danach holst du sie mit stash pop zurück. Zum Wegwerfen ist keiner von beiden gedacht.
Belege
Diese Seite ist gegen die folgenden Primärquellen geprüft – Hersteller, Standard oder Gesetzestext. Wer es nicht glaubt, muss es nicht: Da steht, wo es nachzulesen ist.
Git meldet „detached HEAD“? Du stehst nicht auf einem Branch, sondern direkt auf einem Commit — Änderungen hier gehen ohne Gegenmaßnahme leicht verloren.
git commit bricht mit „gpg failed to sign the data“ ab? Meist fehlt der passende Schlüssel, oder GPG kann im Terminal nicht nach der Passphrase fragen.