2016-06-22 5 views
0

Ich ging weiter und beeilte mich, eine Reihe von Commits mit der Option "Reset" in SourceTree rückgängig zu machen. Die Commits wurden auf einen Bare-Master geschoben, den ich zum Klonen verwende. Jetzt zeigt das Reset-Repository 11 Pulls vom Bare: Master.Setzen Sie den Zweig auf früheres Commit zurück, wollen Sie sicher gehen, dass ich gedrückte Änderungen rückgängig mache

Ein wenig Geschichte: Ich Quellcode haben, die, wenn aktualisiert, ich Code.Publish veröffentlichen. Zuvor habe ich den Bare: Master erstellt, damit ich ein sauberes Repository haben kann. Jedes Mal, wenn der Quellcode aktualisiert wird, veröffentliche ich Code.Publish und stage dann> commit> Push to Bare: master. Ich kloniere Bare: master in drei separate Repositories (Code.Web1, Code.Web2, Code.Web3). Wenn Änderungen an der Quelle Code.Publish gemacht werden, ziehe ich diese Änderungen in Code.Web1, etc.

Ich möchte jetzt die Zusammenführungen/schiebt, die an Bare gemacht: Master von Code.Publish.

Ich erfahre aus dem Lesen THIS, dass ich jetzt nur gitk --date-order tun kann, um die SHA des Commits zu bestimmen, die ich zurückgeben möchte. Und dann würde ich das letzte BAD-Commit auswählen, um das Eltern-Commit zu behalten, was gut ist. Ich wollte nur bestätigen, dass das korrekt ist.

Auch in Bezug auf Code.Web1 usw., wie ich bereits erwähnte, zog ich die Änderungen von Bare: Meister, und sie wurden in das Repository zusammengeführt. Soll ich einfach das Gleiche tun, was ich mit Code.Publish gemacht habe, in dem ich die Commits zum letzten guten "Reverse" machen soll?

Die Änderungen, die ich waren aus Müll, also bin ich nicht besorgt über diese Änderungen, die ich umkehren wollen. Und ich wollte nur sicherstellen, dass es mir gut geht. Eines der Dinge, die mich mit diesem Link oben stolpern ist, dass der Autor kommentiert, dass in Zukunft Zusammenführungen Probleme haben können.

Wesentlichen, wenn ich es auf diese Weise tun, und dann später Änderungen an der Quelle, die zu Code.Publish dann veröffentlicht werden, werde ich laufen in ernsthafte Probleme?

Niemand sonst diesen Code verwendet, so bin ich nicht besorgt, dass Code jemand anderem wird vermasselt werden.

Vielen Dank im Voraus.

+0

Es gibt zwei Möglichkeiten, ein Commit in Git rückgängig zu machen. Der erste, wie Sie beschrieben haben, ist die Verwendung von 'git revert', was genau das Gegenteil von einem vorherigen Commit darstellt. Diese Methode ist absolut sicher in einer veröffentlichten/freigegebenen Remote-Zweigstelle zu verwenden, da sie der Verzweigung einfach neue Commits hinzufügt. Die andere Möglichkeit besteht darin, die fehlerhaften Commits mit einer interaktiven Git-Rebase oder ähnlichem zu löschen. Diese Methode ist in der Regel keine gute Idee für eine veröffentlichte/freigegebene Remoteverzweigung, da sie den Verlauf der Verzweigung neu schreibt, was große Verwirrung und Ärger für alle verursachen kann. –

+0

@TimBiegeleisen, soweit ich sagen kann "Zurück" (oder umgekehrt) ist anders als "Reset", was ich gemacht habe. Wie ich bereits erwähnt habe, ist dies kein geteiltes Repository, so dass das Problem, Verwirrung/Ärger zu verursachen, kein Problem für mich ist. Ich möchte nur sicherstellen, dass ich das "richtig" mache (lass uns gehen, ob ich es "richtig" für einen anderen Tag mache). :) – REMESQ

+0

Wenn du 'N' abspeichern willst, komm vom Kopf des 'Master'-Zweigs, dann benutze' git reset --hard HEAD ~ N'. Ich bin mir nicht sicher, was SourceTree unter der Haube tut. –

Antwort

0

Ich zog die richtige Antwort durch einige zusätzliche Forschung bekommen:

git update-ref HEAD [SHA ID], wo [SHA ID] die ID des Commit ich wieder bekommen wollte.

Ich habe dann git gc und git prune, um alte Referenzen loszuwerden.

Verwandte Themen