Git签署以前的提交?

问题描述 投票:54回答:5

我想知道如何签署(-s)以前我在git中做过的提交?

git sign git-sign
5个回答
72
投票

要注销先前的提交,请使用修改选项:

git commit --amend --signoff

编辑:修改只签署最新提交。根据qazxsw poi等人的建议,签署多次提交,qazxsw poi和qazxsw poi。人。应该使用。这对我有用。

首先,配置git以filter-branch替换令牌interpret-trailers。这必须只进行一次,并在下一步中需要。

vonc

带有开关sign的命令Signed-off-by将为每次提交评估过滤器一次。过滤器可以是任何shell命令,它接收stdin上的提交消息和stdout上的输出。您可以编写自己的过滤器,或使用无能为力的git config trailer.sign.key "Signed-off-by" 。下面是一个使用当前用户和电子邮件签署当前分支的最新两次提交的示例:

git filter-branch

注1)修改提交消息会更改提交ID,这意味着必须使用--msg-filter或更好的git interpret-trailers强制推送已发布的分支。

注2)如果您打算编写自定义脚本,请注意export SIGNOFF="sign: $(git config --get user.name) <$(git config --get user.email)>" git filter-branch -f --msg-filter \ "git interpret-trailers --trailer \"$SIGNOFF\"" \ HEAD~2..HEAD 将当前目录更改为--force。使用脚本的相对路径通常不起作用。相反,脚本应该在您的--force-with-lease中或作为绝对路径提供。


21
投票

尝试使用git filter-branch重做旧提交:

<repo>/.git-rewrite/t

在那之后,你必须$PATH。但要小心,提交ID将会改变,其他人将变得不同步。


10
投票

考虑签名修改提交消息,使用-S来实现。

git filter-branch -f --commit-filter 'git commit-tree -S "$@"' HEAD

(例如“git push -f”)

或者,跟随git filter-branchgit filter-branch --msg-filter \ "cat - && echo && echo 'Signed-off-by: Dan McGee <[email protected]>'" \ HEAD ,使用git filter-branch magic

Curt J. Sampson

警告:这将更改现有提交的SHA1,并且您可能必须强制推送结果,如果您的提交已经被其他人共享,则可能会出现问题。

suggestion添加git interpret-trailers一个例子:

使用git版本2.20.1,我不得不在git config trailer.sign.key "Signed-off-by" git filter-branch --msg-filter \ "cat - && echo && git interpret-trailers --trailer 'sign: 'Signed-off-by: Dan McGee <[email protected]>'" \ HEAD 中省略“vorburger”,并且这样做:

in the comment

6
投票

对我来说只是修改标志,实际上没有验证我在github上的提交。

为我工作的解决方案是返回,然后用Signed-off-by签署每个提交

--trailer 'sign:

此外,如果您检查您的提交是否实际已签名,并且您的电子邮件/名称未被追加,请使用此命令

git filter-branch --msg-filter \
  "cat - && echo && git interpret-trailers --trailer 'sign: Michael Vorburger <[email protected]>'" \
  HEAD

额外提示:如果您已经在修改提交,可能需要在其中使用您的真实姓名(请参阅使用-S)。您可能正在使用您的github句柄名称,这是不需要的。只需要正确的电子邮件,在用户名字段中,您应该使用您的全名,github将使用您的github句柄名称正确跟踪它。因此,要更正您的用户名并签署上次提交使用:

git commit --amend -S

并在以后设置用户名的全名

git show HEAD --show-signature

5
投票

我有一个类似的问题。在这里,感谢来自Gentoo Linux的Robin Johnson,这是一个为我以前所有未提交的提交添加签名的技巧:

git log
© www.soinside.com 2019 - 2024. All rights reserved.