Im Rahmen der Arbeiten an einem Open-Source Projekt hatte ich neulich das Problem, dass ich nach dem Aufsetzen eines neuen Macs erste Commits nicht verifiziert bzw. signiert waren. Damit hatte ich die Challenge, diese Nachträglich zu signieren, um den Pull-Request überhaupt und trotz strikt „enforced merge security through commit validation“ in das Main-Repo mergen zu können. Meistens finden sich Internet Anleitungen für das Resignieren von Commits auf Branches abseites des Main-Branches – da ich in dem Fall aber direkt auf dem Main-Branch gearbeitet habe, musste ich mir auch erstmal überlegen, wie dieses am einfachsten zu bewerkstelligen ist: Dies klappt mit einem Force-Push nach einem Rebase. Beim Main/Master-Branch kann dies über das manuelle Auswählen der betroffenen Commits geschehen.
Hier der Workflow, bei diesem ist es wichtig, Commit-Signing aktiviert und getestet zu haben (wie das möglich is, steht in diesem Gist für MacOS):
- Zuerst wird im Terminal der richtige Ordner ausgewählt, in dem das Git-Repo liegt.
- Mit
git log -n 10 --oneline
werden die letzten Commits im Repo angezeigt.
- Dann mit
git rebase -i HEAD~N
die letzten Commits rebasen: N wird durch die Anzahl der Commits, die Resigniert werden müssen, ersetzt (z.B. 5). Es öffnet sich ein Editor, bei dem jeder Commit mit „edit“ statt „pick“ vorausgewählt werden muss. Nach dem speichern und schließen der Datei wird der interaktive Modus zum Rebasen gestartet
- Dann mit
git commit --amend '-S' --author "USERNAME <MAILADRESSE_DER_SIGNATUR>"
die Resignatur durchführen: Hier öffnet sich jedes mal ein Editor mit der Commit-Nachricht. Ich würde hier nichts ändern.
- Nach jedem bearbeiteten Commit mit
git rebase --continue
zum nächsten Commit springen.
- Wenn alle Commits Signiert wurden, kann mit
git log --show-signature
überprüft werden, ob die Signaturen richtig an die Commits getackert wurden.
- Zum Schluss kann mit
git push --force origin main
die neue Commit-Historie force-pushed werden zum Main-Branch.
Damit sollte der Pull-Request mergebar werden.
Viel Spaß beim Contributen!