/usr/home

just some random thoughts

Git Repo vor dem veröffentlichen säubern

Manchmal entschließt man sich nachdem schon einiges an Arbeit in ein Projekt geflossen ist, dieses doch zu Veröffentlichen. Natürlich hat man das vorher nicht bedacht und daher finden sich ggf. Informationen in den Commits oder Commit-Messages, die nicht an die Öffentlichkeit sollen (Passwörter, URLs, o.ä.). Es gibt einen netten Artikel von GitHub, wie man solche sensitiven Commits bereinigt, allerdings geht das nur mit ganzen Dateien oder Ordnern. Was aber, wenn nur einzelne Zeilen aus den Commits entfernt werden sollen? Mit git rebase könnte man die im nachhinein schon manipulieren, das ist aber schon sehr aufwendig. Ich habe es nun in einem Projekt so gemacht, dass ich aus dem aktuellen Stand alles kompromitierende entfernt und commited habe (wie von GitHub vorgeschlagen mit BFG Repo Cleaner). Um nun die komplette Historie nicht zu verlieren, lasse ich den alten master Branch wie er ist - benenne ihn aber in history um und der aktuelle Stand wird in einen neuen master Branch ohne Historie eingechecked:

git branch -m master history
git checkout --orphan master
git add -A
git commit -m "clean import"

So habe ich meine Historie im branch history und einen neuen, sauberen master Branch. Der history Branch kommt auf den internen Git Server und master kann auch auf GitHub, BitBucket und co.