| 

.NET C# Java Javascript Exception

2
Hey Leute,

ich hab auf'm Live-Server Git ca. 121 Commits. Gerne würde ich alle Commits löschen, so das nur noch der aktuelle Commit vorhanden ist.

Weiß jemand wie?

Viele Grüße
08.05.2014
spiike 170 1 7
Wozu? Der ganze Zweck von git ist es, commits aufzubewahren.
Und was meinst Du mit "Live-Server"?
Matthias Hlawatsch 08.05.2014
Weil ich nicht möchte das ältere Commits wieder herstellt werden können, nur noch die die nach dem jetztigen dazu kommen.
spiike 08.05.2014
1 Antwort
2
WARNUNG: Willst Du das wirklich?
Jeder, der einen Klon Deines Repos besitzt, hat diese 121 Commits lokal bei sich. Ich weiß keinen Weg, sie ihm (zentral gesteuert) wegzunehmen. Du kannst die Commits auf dem Server löschen / verbergen, aber wenn jemand mit seinem alten Repo weitermacht, gibt es beim nächsten Pull oder Push unangenehme Überraschungen - wie (fast) immer, wenn eine veröffentlichte Git-Historie verändert wird.

Die folgenden Hinweise funktionieren also nur, wenn Du alle Entwickler überzeugen kannst, ihre aktuellen Repos wegzuschmeißen und sich das aufgeräumte Repo vom Server neu zu klonen. Oder (brute force...) Du blockierst den Zugang zum alten Server-Repo und bietest das neue unter einer neuen Adresse an. (Dann könnte aber ein böswilliger Entwickler immer noch seinen alten Klon behalten und sich alte Commits in einen neuen Klon rüberpatchen...)

Soweit der Disclaimer. Falls Dich das nicht abschreckt:

Lösung 1 arbeitet mit einem interaktiven rebase und ist hier beschrieben.

Weitere Lösungen werden hier diskutiert. Ich habe die aus der zweiten Antwort ausprobiert (also letztlich How to truncate Git History), das hat auch funktioniert.

In beiden Fällen mußt Du anschließend noch mit

git push origin +master

Deine Änderungen zum Server bringen.
08.05.2014
Matthias Hlawatsch 13,2k 4 9

Stelle deine Git-Frage jetzt!