Dieser Artikel basiert auf einer Idee aus http://honk.sigxcpu.org/con/Truncating_git_history.html.
Ein privates Git-Repository mit einer langen Git-Versionsgeschichte soll bspw. auf GitHub veröffentlicht werden. Üblicherweise erscheint das Repository dann inklusive kompletter Versionsgeschichte.
Ziel des hier beschriebenen Verfahrfens ist:
- Veröffentlichung ohne Versionsgeschichte
- Verfügbarhalten der Versionsgeschichte im lokalen Repository
Ausgangslage
Unsere Ausganglage ist diese:
- Wir haben ein lokales Git-Projekt
- Das Git-Projekt hat keine “offenen Dateien”:
1 2 3 | |
- Das Git-Projekt hat eine längere Git-Versionsgeschichte:
1 2 3 4 | |
- Der aktuell ausgecheckte Stand soll veröffentlicht werden ohne Versionsgeschichte.
Ablauf
Der für mich einfachste Ablauf ist dieser:
- Alten “master” wegschieben:
git branch -m master ancient-history - Neuen “master” erzeugen:
git checkout --orphan master - Neuen “master” wegschreiben:
git commit -m "Initial commit" - “Kurze” Versionsgeschichte:
git log --oneline master - “Lange” Versionsgeschichte:
git log --oneline master ancient-history