2017-01-23 2 views
0

Ich habe ein Repo, die wie folgt aussieht:Wie entferne ich eine große Menge von Git-Commits vollständig?

A--B--C------F--G H--I--J--K---------O--P 
     \ /    \  /
     D--E     L--M--N 

I Commits A..G beseitigen wollen. Es ist mir egal, bestimmte Dateien oder Ordner zu löschen. Ich möchte meine Commits nicht rückgängig machen. Ich möchte, dass diese Commits aus der Historie verschwinden. Ich habe verschiedene Beschwörungen von filter-branches und rebase ausprobiert, aber ich kann nicht scheinen, git zu tun, was ich will.

+0

Das sieht aus wie unabhängige Geschichte. Versuchen Sie einen Zweig zu löschen? –

+0

Es ist unabhängige Geschichte, mit vielen Zweigen der eigenen – justinrstout

Antwort

0

können Sie interaktive Rebase (rebase -i) und Squash (s in der interaktiven Commit-Sitzung) und dann push -f, Geschichte zu schreiben.

Beachten Sie, dass dieses Repository für alle anderen Benutzer, die dieses Repo geklont haben, unterbrochen wird. Sie müssen neu klonen und möglicherweise ihre laufende Arbeit verlieren. Es ist also ein Anti-Pattern.

+0

Ich denke 'Rebase -i' und anstelle von Squash, tatsächlich löschen Sie die Zeilen der Commits, die er will gegangen. Alle Commits auf der ganzen Linie werden jedoch neue Commit-Hashes haben, also muss OP hier die Implikationen verstehen. – jbu

Verwandte Themen