2016-03-31 15 views
-1

Im Wesentlichen möchte ich zwei Commits in meinem lokalen Repo zurücksetzen. Nichts wurde bisher in die Ferne gerückt.Wie entferne ich eine große Datei 2 Git Commits zurück?

Also in meinem GIT Repo habe ich versehentlich eine riesige Zip-Datei in ein Commit (A) hinzugefügt. Ich erkannte das, entfernte die Zip-Datei mit Finder und machte einen weiteren Commit (B).

Aber jetzt merke ich, dass, wenn ich das Fern schieben, wäre es, dass die gesamte Zip-Datei enthält ...

Und um die Dinge noch komplizierter ich auch eine Reihe von wichtigen Änderungen an mehrere Dateien hatte in das erste Commit (A), das ich nicht verlieren möchte.

Wie entferne ich diese Zip-Datei aus dem Verlauf, bevor ich sie auf die Fernbedienung verschiebe? Kann ich vor diesen beiden Commits zurück in den Zustand meiner Dateien wechseln, ohne alle Änderungen in mehreren anderen Dateien zu verlieren?

Antwort

0

Der einfachste Weg, um es zu beheben, wäre die Verwendung des Befehls git reset <commit>.

In Ihrem Fall, da Sie zwei Commits rückgängig zu machen möchten, können Sie tun:

git reset HEAD~2

Von git help reset:

git reset [<mode>] [<commit>]

--mixed Setzt die Index, aber nicht den Arbeitsbaum (dh die geänderten Dateien werden beibehalten, aber nicht für die Festschreibung markiert) und meldet, was nicht aktualisiert wurde. Dies ist die Standardaktion.

Danach werden Ihre Dateien in Ihren Repos überhaupt nicht mehr geändert, aber die beiden letzten Commits werden nicht mehr existieren.

Sie können dann auswählen, welche Dateien Sie genau wie Sie normalerweise festschreiben möchten.

0

-Link: How to move your HEAD/ revert changes

Lesen Sie den Link oben für weitere Informationen.

können Sie verwenden:


aus dem obigen Beitrag Genommen ist hier eine der Fluss von dem, was getan werden kann, um einen Reset HEAD

enter image description here


Weitere Optionen:

How to remove big files from the repository

können Sie git filter-branch oder BFG verwenden. https://rtyley.github.io/bfg-repo-cleaner/

BFG Repo-Cleaner

eine Alternative zu GIT-Filterzweig.

Die BFG ist eine einfachere, alternative schneller zu git-filter-Zweig für die Reinigung schlechte Daten aus Ihrem Git Repository Geschichte:

* Entfernen Verrücktes Big Files *
* Entfernen von Passwörtern, Credentials & andere private Daten

Beispiele (von der offiziellen Website)

In all diesen Beispielen ist bfg ein Alias ​​für java -jar bfg.jar.

# Delete all files named 'id_rsa' or 'id_dsa' : 
bfg --delete-files id_{dsa,rsa} my-repo.git