421 Stimmen

git: Zweig wechseln und alle Änderungen ignorieren, ohne zu committen

Ich habe an einem Git-Zweig gearbeitet und war bereit, meine Änderungen zu übertragen, also habe ich einen Commit mit einer sinnvollen Commit-Nachricht gemacht. Dann habe ich geistesabwesend kleinere Änderungen am Code vorgenommen, die es nicht wert sind, beibehalten zu werden. Jetzt möchte ich den Zweig wechseln, aber Git lässt mich im Stich,

Fehler: Sie haben lokale Änderungen an "X"; Sie können nicht zwischen den Zweigen wechseln.

Kann ich Zweige ändern, ohne sie zu bestätigen? Wenn ja, wie kann ich das einrichten? Wenn nicht, wie komme ich aus diesem Problem heraus? Ich möchte die kleineren Änderungen ohne Commit ignorieren und nur die Zweige ändern.

15voto

vishnu viswanath Punkte 3618

Keine dieser Antworten hat mir geholfen, da ich auch nach dem Zurücksetzen und Verstecken immer noch nicht verfolgte Dateien hatte. Ich hatte zu tun:

git reset --hard HEAD
git clean -d -f

11voto

Pedro Trujillo Punkte 1289

git checkout -f ihr_Zweig_name

git checkout -f your_branch_name

wenn Sie Probleme mit der Rückgängigmachung von Änderungen haben:

git checkout .

wenn Sie nicht verfolgte Verzeichnisse und Dateien entfernen möchten:

git clean -fd

9voto

Greg Hewgill Punkte 882617

Wenn Sie Änderungen an Dateien vorgenommen haben, die Git beim Wechseln der Zweige ebenfalls ändern muss, lässt es Sie nicht gewähren. Um Änderungen zu verwerfen, verwenden Sie:

git reset --hard HEAD

Dann können Sie den Zweig wechseln.

8voto

Harshit Pant Punkte 937

Folgen Sie diesen Schritten:

  1. Git stash save speichert alle Ihre Änderungen, auch wenn Sie zwischen Zweigen wechseln.
git stash save
  1. Git checkt jeden anderen Zweig aus. Da Sie Ihre Änderungen gespeichert haben, können Sie sich nun in jedem Zweig bewegen. Der obige Befehl stellt sicher, dass Ihre Änderungen gespeichert werden.
git checkout branch
  1. Wenn Sie nun zu dem Zweig zurückkehren, verwenden Sie diesen Befehl, um alle Ihre Änderungen zurückzubekommen.
git stash pop

6voto

Kareem Jeiroudi Punkte 624

Einfache Antwort:

ist das erzwungene Auschecken einer Verzweigung

git checkout -f <branch_name>

Das erzwungene Auschecken eines Zweigs bedeutet, dass Git alle Änderungen, die Sie im aktuellen Zweig vorgenommen haben, verwirft und den gewünschten Zweig auscheckt.

oder für den Fall, dass Sie eine Übertragung überprüfen

git checkout -f <commit-hash>

"Ich dachte, ich könnte den Zweig wechseln, ohne mich zu binden. Wenn ja, wie kann ich das einrichten? Wenn nicht, wie komme ich aus diesem Problem heraus?"

Die Antwort auf diese Frage lautet Nein Das ist buchstäblich die Philosophie von Git, dass Sie alle Änderungen verfolgen und dass jeder Knoten (d.h. jeder Commit) auf dem neuesten Stand sein muss, es sei denn, Sie haben einen neuen Commit gemacht.

Sie haben sich entschieden, Änderungen beizubehalten?

Dann verstauen Sie sie mit

git stash

und dann, um Ihre Änderungen im gewünschten Zweig freizugeben, verwenden Sie

git stash apply

wodurch die Änderungen übernommen werden, aber auch in der Warteschlange für den Vorrat verbleiben. Wenn Sie sie nicht im Stash-Stapel behalten wollen, dann entfernen Sie sie mit

git stash pop

Das ist das Äquivalent zu apply und dann drop

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X