Git hat jetzt die Möglichkeit, Commits zu signieren git commit -S
, was großartig ist, aber manchmal vergesse ich das Flag für commit
, und manchmal maile ich mir Patches, mit denen ich mich bewerbe am
, und dieser Befehl hat kein Flag zum Signieren.
Gibt es eine Möglichkeit, einem bereits aufgezeichneten Commit eine Signatur hinzuzufügen?
git config commit.gpgsign true
.Antworten:
Fügen Sie nach jedem Commit, das Sie signieren möchten, die folgende Zeile hinzu
exec git commit --amend --no-edit -S
Dadurch wird dieser Befehl nach jedem Festschreiben ausgeführt.
AKTUALISIEREN:
Der einfachere Weg dies zu tun ist:
Dadurch wird alles bis zur Entwicklung (oder einem beliebigen Hash) neu aufgebaut, und Sie müssen nicht nach jedem Commit Paste kopieren.
quelle
resign = "!re() { git rebase --exec 'git commit --amend --no-edit -n -S' -i $1; }; re"
wirdgit resign HASH
git commit --amend --no-edit -n -S
.git push --force
?Durch das Signieren eines Commits wird sein Inhalt geändert, sodass neuere Commits je nach Commit den Hash ändern.
Wenn Sie nur das letzte Commit unterschreiben möchten,
git commit -S --amend
funktioniert es.quelle
Ich benutze
git rebase -i --root
(siehe Umschreibeverlauf ) und wechslepick
zuedit
.Dann benutze ich
git commit -S --amend --no-edit && git rebase --continue
(unter Windows) für jeden Commit.quelle
Ich bin auch auf das gleiche Problem gestoßen und hier ist meine Lösung:
Dies signiert alle meine Commits vom ersten Commit an und umgeht auch den Commit-Hook , den ich mit husky eingerichtet habe . Keine Notwendigkeit zu ändern ,
pick
zuedit
.quelle
Wenn Sie nur bestimmte Commits filtern und nur diese signieren möchten, können Sie Folgendes verwenden
filter-branch
:Dies ist nützlich, wenn Sie aus irgendeinem Grund nur Ihre eigenen Commits signieren möchten.
quelle
Wenn Sie alle Festschreibungen von GPG signieren müssen, SEITdem Sie eine bestimmte Festschreibung für den aktuellen Zweig vorgenommen haben, können Sie stattdessen Folgendes verwenden:
git filter-branch --commit-filter 'git commit-tree -S "$@";' <COMMIT>..HEAD
Wo
<COMMIT>
ist die Festschreibungs-ID (zabc123e5
. B. ) ?Dies hat den zusätzlichen Vorteil, dass die Commit-Metadaten (einschließlich des Commit-Datums) nicht gestört werden.
Wenn Sie nicht mehr bei jedem Commit zur Eingabe Ihrer GPG-Passphrase aufgefordert werden möchten, lesen Sie auch diese Antwort: https://askubuntu.com/a/805550
HINWEIS: Wenn Sie zum Signieren von GIT von
gpg
aufgpg2
wechseln, müssen Sie Ihren privaten Schlüssel in GPG 2 erneut importieren.quelle