Git: Gibt es ein Äquivalent zu hg strip?

Lesezeit: 2 Minuten

Ich habe ein Repo, in dem ich eine Änderung vorgenommen habe, die die Zusammenführungshölle verursacht, und ich möchte so tun, als hätte es nie existiert. Eine lange, komplizierte Geschichte, bei der es darum geht, ein bereits vorhandenes Repo auf eins zu spleißen, das über git-p4 aktualisiert wird, aber das Ergebnis ist, dass ich wirklich, wirklich möchte, dass Git so tut, als hätte es eine bestimmte Änderung nie gegeben.

Wenn es Mercurial wäre, bin ich mir ziemlich sicher, dass ich mein Problem damit lösen könnte hg stripaber ich kann einen solchen Befehl in Git nicht finden.

Vielen Dank für alle Vorschläge, die Sie haben könnten.

Es gibt mehr als einen Befehl, den Sie ausführen müssen. Die erste ist, wie andere Leute bereits erwähnt haben git reset. Sie werden das Changeset einfach finden wollen Vor die Sie loswerden und verwenden möchten

git reset --hard <changeset>

Dadurch wird der aktuelle Zweigkopf (und der Index) so geändert, dass er auf diesen Änderungssatz zeigt, aber der “schlechte” Änderungssatz ist es noch vorhanden. Es wird nicht aufgenommen, wenn Sie drücken, aber es Wille eingeschlossen werden, wenn Sie Ihr lokales Repository klonen und es weiterhin in Protokoll- und Checkout-Befehlen referenziert werden kann.

Angenommen, es gibt keine anderen Verweise darauf (z. B. nachfolgende Commits, Tags usw.), können Sie es dann bereinigen mit:

git gc --prune=now

Ich habe diesen Befehl dank gefunden http://help.github.com/remove-sensitive-data/die das auch erwähnt (wie bei hg strip), wenn Sie diesen “schlechten” Änderungssatz an einen entfernten Ort verschoben haben kippen Entfernen Sie es mit normalen Git-Befehlen, aber Sie müssen zusätzliche Schritte unternehmen, um das Repository auf dem Server zu entfernen und neu zu erstellen und alle zwischengespeicherten Seiten zu bereinigen.

Benutzer-Avatar
Tim

Wie Larsk sagte, git reset --hard kann Ihnen helfen, zum gewünschten Verlauf zurückzukehren:

  1. Finden Sie den korrekten sha-Wert, den Sie wieder verwenden möchten git log.
  2. Laufen git reset --hard sha zurück zu kehren.

Versuchen Sie, die Dokumentation für zu lesen git reset. Ich bin mit Mercurial nicht so vertraut, aber wenn ich es verstehe dieses Dokument korrekt, git reset lässt Sie dasselbe tun – das heißt, Ihr Repository auf einen früheren Punkt in seiner Historie zurücksetzen.

Dieses Dokument diskutiert die reset Befehl im Detail, und Dieses hier geht kurz auf verschiedene Möglichkeiten der Fehlerkorrektur ein.

1205310cookie-checkGit: Gibt es ein Äquivalent zu hg strip?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy