2010-03-28 12 views
9

Mit TortoiseGit (ich versuche, die Befehlszeilennutzung zu vermeiden), wie löscht man alle Commits, die von einem bestimmten Commit abgingen, und "zurück in die Vergangenheit" (Beispielverwendung: fortgesetzt etwas tun, dachte, dass ich nicht mochte, wo es hinging, und beschlossen, "zurück" zu gehen und dabei alles dazwischen zu ignorieren.Verwenden von TortoiseGit Löschen aller nach einem bestimmten Commit

Kurz gesagt möchte ich 5 commits "zurück" gehen, und löschen sie danach.

Antwort

1

Über die Befehlszeile können Sie den Befehl zum Zurücksetzen oder Zurücksetzen verwenden. TortoiseGit sollte ähnliche Befehle haben, vielleicht können Sie auf sie zugreifen, indem Sie auf das Commit-Protokoll schauen?

+0

Oh, okey. Nun, soweit ich sehen kann, hat es einen Befehl zum Zurücksetzen. Aber es ändert Änderungen, die ich in der Arbeitskopie gemacht habe, zurück zum letzten Commit. Ich habe keine Möglichkeit gesehen, mehrere Commits "down the road" rückgängig zu machen.In jedem Fall, mindestens +1 für den Versuch :) – richard

+0

Ah, ich habe nicht bemerkt, dass Sie zurückgehen wollten 5 commits X ( 'git-reset' (--hard) sollte Ihr neuer Freund sein;) – Tuxified

2

Ich habe noch nie Schildkröte alles verwendet (es sei denn Sie die electronica Gruppe zählen), aber ich werde Ihnen diese Informationen bei (ich habe nicht TortoiseGit so kann ich überprüfen, es wird nicht verwendet) Sie finde keinen Weg, dies mit der GUI zu tun, oder du entscheidest dich letztendlich, CLI zu machen.

Wie @Tuxified erwähnt, können Sie dies mit git reset --hard <COMMIT> erreichen. Sie müssen eine Commit angeben, die in einer einschüchternden Palette möglicher Möglichkeiten erfolgen kann; am häufigsten sind Formulare wie HEAD~4, die ein commit 4 commits vor dem Kopf des aktuellen Zweigs und deadbeef42 spezifizieren, das ein commit angibt, dessen SHA1 mit 0xdeadbeef42 beginnt. Wenn Sie Linux oder OSX ausführen, können Sie die vollständigen Details zu den Commit-Spezifizierern über man git-rev-parse unter "FESTLEGEN DER ÜBERPRÜFUNGEN" abrufen.

Sie können auch den aktuellen Zweig umbenennen (git branch -m new_branch_name) und dann einen neuen Zweig mit dem Kopf an der Stelle erstellen, an der Sie zurückkehren möchten. Der Vorteil ist, dass, wenn Sie am Ende alle oder einige der Dinge, die Sie dort getan haben, verwenden möchten, können Sie immer noch leicht darauf zugreifen; und wenn du das Commit falsch schreibst, bist du vor einem großen Heiligenmoment gerettet. Plusgit Zweige sind superleicht, der einzige wirkliche Nachteil ist, dass es einen anderen Zweig gibt. Um den neuen Master-Zweig zu erstellen, verwenden Sie , und dann überprüfen Sie es. Der Nettoeffekt ist also derselbe wie bei der ersten Option, außer dass Sie Ihre alten Änderungen noch in der Verzweigung new_branch_name gespeichert haben. Sie können diese Änderungen später auch nach neuen Commits an master wieder zusammenführen, wenn Ihnen danach ist.

Beachten Sie, dass eine dieser Techniken in Betracht gezogen werden „Umschreiben der Geschichte“ und wird zu Problemen führen, wenn Sie Ihre Repo sind mit anderen zu teilen. Wenn Sie clever sind und zu einem Backup-Repo in einer Cloud-Stadt oder einem anderen PC drängen, müssen Sie die Dinge an diesem Ende beheben, bevor Sie erneut darauf zugreifen können.

Dies ist wahrscheinlich viel mehr Informationen, als Sie gerade brauchen, aber wenn Sie am Ende mit Git viel verwenden, werden Sie wahrscheinlich diese Dinge irgendwann lernen wollen. Tut mir leid, ich weiß nicht, wie man Tortoise verwendet ...

27

Gehen Sie zu TortoiseGit -> Show log. Wählen Sie das letzte Commit, das Sie behalten möchten, alles oben wird gelöscht. Klicken Sie dann mit der rechten Maustaste darauf und wählen Sie "Reset" Master "to this" und wählen Sie Hard. Seien Sie jedoch vorsichtig, denn wenn Sie dies erst einmal gemacht haben, wird es für immer verloren sein, es sei denn, sie werden irgendwo in einem anderen Zweig gespeichert.

+4

Side Hinweis: Wenn Sie diese Änderung an den Master übertragen, müssen Sie die Option "Vorhandenen Zweig überschreiben" aktivieren oder es wird fehlschlagen. – Powerlord

+5

In TortoiseGit v1.8.14 wurde die Option "Überschreiben erzwingen" in "Optionen"> "Erzwingen: Verwerfen" geändert und das Kontrollkästchen "bekannte Änderungen" aktiviert. Ich musste die zerstörerischere Option "unbekannte Änderungen" nicht verwenden. – ShawnFeatherly

Verwandte Themen