Diese Frage ähnelt dieser , ist jedoch spezifischer.
Ich habe ein Projekt mit zwei Zweigen ( staging
und beta
).
Ich entwickle weiter staging
und benutze den master
Zweig, um Fehler zu beheben. Wenn ich also an der Bereitstellung arbeite und einen Fehler sehe, wechsle ich zum master
Zweig:
git checkout master
und mach das Zeug:
git add fileToAdd
git commit -m "bug fixed"
und dann verschmelze ich mit beiden Zweigen:
git checkout staging
git merge master
git checkout beta
git merge beta
Und es spielt keine Rolle, ob sich andere Dateien im Arbeitsbaum befinden.
Aber jetzt, wenn ich versuche, zum master
Zweig zu wechseln , erhalte ich eine Fehlermeldung :
error: Your local changes to the following files would be overwritten by checkout:
src/Pro/ConvocationBundle/Controller/DefaultController.php
Please, commit your changes or stash them before you can switch branches.
Aborting
Ich dachte, ich sollte die Datei aus dem Staging-Bereich entfernen:
git reset HEAD src/Pro/ConvocationBundle/Controller/DefaultController.php
aber ich bekomme den gleichen Fehler. Wenn ich das tue, git status
bekomme ichNo changes to commit
git
git-checkout
Manolo
quelle
quelle
reset --hard
? Wenn Sie wirklich sicher sind, dass Sie Ihre Änderungen verwerfen möchten. Oder verwenden Sie Stash, wenn Sie dies nicht tun.git add your-file
und zu begehen.staging
jetzt keine Änderungen vornehmen .Antworten:
Ihr Fehler wird angezeigt, wenn Sie eine Datei geändert haben und der Zweig, zu dem Sie wechseln, auch Änderungen für diese Datei enthält (ab dem letzten Zusammenführungspunkt).
Ich sehe es so, dass Sie Folgendes festlegen: Festschreiben und dann dieses Festschreiben mit zusätzlichen Änderungen ändern (Sie können Festschreibungen in Git ändern, solange sie nicht
push
bearbeitet werden). oder - Stash verwenden:git stash save
erstellt einen Stash, der Ihre Änderungen enthält, aber keinem Commit oder Zweig zugeordnet ist.git stash pop
Wendet den neuesten Stash-Eintrag auf Ihren aktuellen Zweig an, stellt gespeicherte Änderungen wieder her und entfernt sie aus dem Stash.quelle
add
wenn es tatsächlichsave
aktualisiert wird. Du meinst, für andere Dateien?git stash save
Ohne Dateinamen speichert der Parameter alle geänderten Dateien, wenn Sie möchten (und setzt sie auf den zuletzt festgeschriebenen Zustand zurück). Und eine zusätzliche Kopie des Verzeichnisbaums zu haben, tut nie weh, aber ich bin immer paranoid.master
Zweig hinzufügen möchte . Eine Option wären auchpop
die Änderungen in einem anderen Zweig?master
, aber dadurch geht der aktuelle Inhalt verloren. Da dieser Inhalt nicht festgeschrieben ist, ist es unmöglich, später in diesen Status zurückzukehren, daher ein Fehler Ich würde mich später nicht über verlorene Änderungen aufregen.Ich bin auf das gleiche Problem gestoßen und habe es durch gelöst
und seine Spezifikation ist ziemlich klar.
quelle
Sie können das Auschecken Ihres Zweigs erzwingen, wenn Sie Ihre lokalen Änderungen nicht übernehmen möchten.
quelle
sudo
ist nicht notwendig, es wird nur die Dateiberechtigungen brechen. Es ist der gleiche Git-Befehl wie vor einem Jahr von @kiki_yu , aber es ist noch schlimmer.Nun, sei vorsichtig mit dem
-f
Schalter. Sie verlieren alle nicht festgeschriebenen Änderungen, wenn Sie den-f
Schalter verwenden. Während es einige Anwendungsfälle geben kann, in denen die Verwendung hilfreich-f
ist, möchten Sie in den meisten Fällen möglicherweisestash
Ihre Änderungen vornehmen und dannswitch
verzweigen. Diestashing
Vorgehensweise ist oben erläutert.quelle
Sie können in der aktuellen Verzweigung festschreiben, in eine andere Verzweigung auschecken und schließlich diese Festschreibung auswählen (anstelle der Zusammenführung).
quelle
Wenn Sie dies erhalten, wenn Sie versuchen, einen anderen Zweig zu überprüfen:
Dies bedeutet, dass Sie einige Änderungen an dem Zweig vornehmen müssen, den Sie ausgecheckt haben - oder Sie müssen sie entweder löschen oder verstauen, wie die meisten der oben genannten Punkte zeigen. 19 von 20 Mal bin ich viel wahrscheinlicher, nur meine Änderungen zu übernehmen.
Nachdem Sie dies getan haben, können Sie den anderen Zweig überprüfen und ganz einfach hin und her wechseln.
Stellen Sie einfach sicher, dass Sie sich beide im rechten Zweig befinden und zum rechten Zweig pushen, wenn Sie Ihren Befehl git push origin $ {branch} ausführen. Hinweis: Wenn Sie Ihr Projekt direkt in Intellij eingebunden haben, können Sie sehen, dass Sie Ihren Zweig in der unteren rechten Ecke des Hauptfensters geändert haben.
quelle