Gibt es eine Möglichkeit, ein Commit zurückzusetzen, sodass meine lokale Kopie die in diesem Commit vorgenommenen Änderungen beibehält, diese jedoch zu nicht festgeschriebenen Änderungen in meiner Arbeitskopie werden? Wenn Sie ein Commit zurücksetzen, gelangen Sie zum vorherigen Commit. Ich möchte die vorgenommenen Änderungen beibehalten, habe sie jedoch in den falschen Zweig übernommen.
Dies wurde nicht vorangetrieben, sondern nur begangen.
git reset --soft
undgit reset --mixed
beide tun dies (etwas anders), siehe git-resetAntworten:
Es gibt viele Möglichkeiten, zum Beispiel:
falls Sie das Commit noch nicht öffentlich gemacht haben:
Das war's, Ihre Commit-Änderungen befinden sich in Ihrem Arbeitsverzeichnis, während das LAST-Commit aus Ihrem aktuellen Zweig entfernt wird. Siehe git reset man
Falls Sie tut Push öffentlich (auf einem Zweig namens ‚Master‘):
normales Commit zurücksetzen und drücken
Wenn Sie diese Änderungen nun als lokale Änderungen in Ihrer Arbeitskopie haben möchten ("damit Ihre lokale Kopie die in diesem Commit vorgenommenen Änderungen beibehält"), setzen Sie das Zurücksetzen-Commit einfach mit der folgenden
--no-commit
Option zurück:Ich habe ein kleines Beispiel erstellt: https://github.com/Isantipov/git-revert/commits/master
quelle
reset
lautet der erste erwähnte Befehl "sanft" auf 1 Umdrehung vor dem Kopf zurückgesetzt, wodurch alle lokalen Änderungen erhalten bleiben. Dies war mir für die Verwendung in SourceTree nicht sofort klar. Stellen Sie einfach sicher, dass Sie sanft auf die vorherige Umdrehung zurücksetzen, nicht auf die Umdrehung, die Sie zurücksetzen möchten"Already up to date"
wann die Zusammenführung durchgeführt wird.Wenn Sie die Änderungen übernommen haben, können Sie
undo
sie verwenden und die Dateien wieder auf die Bühne verschieben, ohne einen anderen Zweig zu verwenden.Es wird eine Patch-Datei erstellt, die die letzten Zweigänderungen enthält. Dann werden die Änderungen rückgängig gemacht. Wenden Sie zum Schluss die Patch-Dateien auf den Arbeitsbaum an.
quelle
rm patch
auchFür den Fall: "Dies wurde nicht gepusht, sondern nur festgeschrieben ." - Wenn Sie IntelliJ (oder eine andere JetBrains-IDE) verwenden und noch keine Änderungen vorgenommen haben , können Sie dies als Nächstes tun.
Erledigt.
Dadurch werden Ihre Änderungen "aufgehoben" und Ihr Git-Status wird auf den Punkt vor Ihrem letzten lokalen Festschreiben zurückgesetzt. Sie verlieren keine Änderungen, die Sie vorgenommen haben.
quelle
git reset --soft "HEAD^"
übrigens Windows. :)Bei mir passiert es meistens, wenn ich Änderungen in den falschen Zweig schiebe und später realisiere. Und folgende Arbeiten in den meisten Fällen.
quelle
git checkout branch_name
git merge --abort
Git-Status
git reset --hard origin / branch_name
quelle
2020 einfacher Weg:
Commit-Hash des letzten Commits, das Sie behalten möchten.
quelle