Wie gehen Sie zurück zur vorherigen übertragung ohne Verlust des letzten commit in Git?
Hier ist, was ich tun will. Ich will zurück zu 2 verpflichtet sich vor, um wieder die Dateien, die geändert, die sich als eine neue commit-vielleicht. Aber ich will nicht zu verlieren meine letzten commit. Meine letzten commit hat einige Fehler im code, aber ich möchte zu halten, dass man für jetzt.
Las ich einige Unterlagen, aber keiner machte es klar, was passiert, wenn Sie setzen Sie Ihren Kopf. Tun, verlieren Sie alle änderungen, bis Sie die eine, die Sie zurücksetzen, um (rückwärts) zum Beispiel?
Ich versuche zu verstehen wie das alles funktioniert, aber ich bin etwas verwirrt über git revert
, reset
und checkout
Befehle.
Merke ich, dass ich verteilt habe die letzten commit anstatt zu Begehen, aber das ist eine andere Geschichte für jetzt.
- Können Sie ein wenig genauer, was Sie wollen zu tun? Wollen Sie rückgängig machen der vorherigen Begehen? Oder wollen Sie zu halten, die meisten der änderungen, die diese beiden commits gemacht, außer ein paar Dateien?
- jszakmeister, Sowie ich nicht wollen, um loszuwerden, alle verpflichtet. Ich will, dass meine Vergangenheit intakt. Ich will einfach nur zurück zu bringen 2 verpflichtet, bevor Sie als neue Arbeits-Bühne denke ich.
- Es ist noch unklar, was bedeutet "zurück bringen" bedeuten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
revert
macht einen neuen commit, der kehrt änderungen von einem älteren commit.reset --hard
änderungen der KOPF des aktuellen Zweiges an die angegebene Begehen.checkout
wechselt die Arbeitskopie mit der angegebenen Filiale oder zu Begehen.Wenn Sie reset ein Zweig auf einen älteren commit der neueren verpflichtet sind verloren, wenn Sie nicht Teile von anderen Niederlassungen oder Vorfahren von tags (Sie sind immer noch zugänglich über
reflog
obwohl).Es ist nicht klar, was Sie dazu tun müssen, die wahrscheinlichsten Lösungen sind
revert
(vollständig wiederherstellen eines älteren commit-oder eine Reihe von commits) und derrebase -i
(um einen älteren commit oder löschen Sie es aus der Geschichte).git revert
hat starke Auswirkungen, da es erzeugt einen commit, der negiert die änderungen, die einer vorherigen commit. Seien Sie vorsichtig, wenn Sie es verwenden, wenn Sie sicher sind, was Sie wollen.git reflog
Wenn Sie wollen, um zurück zu gehen, sprich 2 verpflichtet den vorherigen, können Sie nur
git checkout HEAD~2
. Dieser wird Euch alle kriegen, wie es damals war. Wenn Sie auf einem astmaster
,git checkout master
bringt Sie zurück in die Gegenwart. Wenn, jedoch, Sie wollen, halten Sie den gegenwärtigen Zustand, sondern starten Sie eine neue developemnt ast dagit checkout -b HEAD~2
startet eine neue Niederlassung dort. In Fall, dass Sie wollen, um es zurückzuspulen master aber nicht Locker, Ihre aktuellen, unfertigen/gebrochen Werk, tun,