Signieren eines bestehenden Commit mit GPG

Lesezeit: 2 Minuten

Ich suche nach einer Möglichkeit, was zu replizieren git commit -S tut dies nur bei einem bestimmten Commit, indem er zum Beispiel seinen SHA angibt.

Ist es möglich?

  • Mögliches Duplikat von superuser.com/questions/397149/can-you-gpg-sign-old-commitsaber es wird nicht empfohlen superuser.com/questions/1144817/…

    – Michael Freigeim

    25. November 2020 um 14:14 Uhr

  • Beantwortet das deine Frage? Gibt es eine Möglichkeit, alle vorherigen Commits mit gpg zu signieren?

    – Michael Freigeim

    5. Mai um 21:18 Uhr

  • Ja, etwas anders, aber es funktioniert. Meine Frage ist älter als die beiden von Ihnen erwähnten Fragen. Ich habe dafür gestimmt, die andere zu schließen.

    – chalasr

    5. Mai um 23:04 Uhr


  • “Mögliche Duplikate” ist eine Möglichkeit zur Bereinigung – ähnliche Fragen zu schließen und mit den eins zu bleiben beste Antworten. Das Datum ist nicht zwingend. Sehen meta.stackexchange.com/questions/147643/… Wenn Sie zustimmen, dass es einer Klärung bedarf, stimmen Sie bitte darüber ab meta.stackexchange.com/questions/281980/…

    – Michael Freigeim

    6. Mai um 13:50 Uhr

Benutzer-Avatar
bitoiu

Das Signieren eines Commit ändert die Commit-Metadaten und somit die zugrunde liegende SHA1-Commit-ID. Wie Sie wahrscheinlich wissen, hat dies für Git die gleiche Konsequenz wie der Versuch, den Inhalt Ihres Verlaufs zu ändern.

Wenn Sie einfach Ihr letztes Commit neu signieren möchten, können Sie Folgendes ausführen:

git commit -S --amend

Wenn Sie einen Commit mitten in Ihrem Verlauf neu signieren möchten, können Sie ein paar Dinge tun, die alle etwas unangenehm sind, wenn Sie mich fragen:

  1. Sie könnten reset --soft zu dem Commit, das Sie signieren möchten. Lauf git commit -S --amend und dann alle inszenierten Änderungen festschreiben. Das würde verschmelzen Ihr gesamter Verlauf nach diesem Commit in einem einzigen Commit
  2. Verzweigen Sie sich (zur Sicherheit) und reset --hard zu dem Commit, das Sie signieren möchten. Unterzeichnen Sie es, und wenn Sie den Commit-Verlauf aufbewahren möchten, können Sie dies jetzt tun git cherry-pick NEXTCOMMIT -S um die gesamte signierte Geschichte neu aufzubauen.

  • Ich benutzte --amend -S für mein letztes Commit, aber ich war nicht in der Lage, dasselbe in der Geschichte zu tun. Super, danke @bitoiu

    – chalasr

    10. Juni 2016 um 8:24 Uhr

Wenn Sie alle vorhandenen Commits im Zweig signieren möchten, ohne Änderungen daran vorzunehmen:

git rebase --exec 'git commit --amend --no-edit -n -S' -i origin/HEAD

  • Ich bekomme fatal: invalid upstream 'origin/HEAD'

    – Kris

    8. März um 10:13

1011760cookie-checkSignieren eines bestehenden Commit mit GPG

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy