Git现在可以用来签署提交git commit -S
,这很棒,但是有时我忘记了的标志commit
,有时我将适用于的补丁邮寄给自己am
,而该命令没有用于签署的标志。
有没有一种方法可以将签名添加到已记录的提交中?
Git现在可以用来签署提交git commit -S
,这很棒,但是有时我忘记了的标志commit
,有时我将适用于的补丁邮寄给自己am
,而该命令没有用于签署的标志。
有没有一种方法可以将签名添加到已记录的提交中?
Answers:
在您要签名的每个提交之后添加以下行
exec git commit --amend --no-edit -S
在选择每个提交后,它将运行此命令。
更简单的方法是:
git rebase --exec 'git commit --amend --no-edit -n -S' -i development
这将使所有内容重新部署,直到开发(或任何哈希)为止,并且您不必在每次提交后都复制粘贴。
resign = "!re() { git rebase --exec 'git commit --amend --no-edit -n -S' -i $1; }; re"
成为git resign HASH
git commit --amend --no-edit -n -S
。
git push --force
吗?
我使用git rebase -i --root
(请参阅重写历史记录)并更改pick
为edit
。
然后,我git commit -S --amend --no-edit && git rebase --continue
在Windows上使用每个提交。
这是每个提交的手动签名。希望我们能找到更好的解决方案。
如果您需要对所有提交进行GPG签名,除非在当前分支上执行特定的提交,否则可以使用以下命令:
git filter-branch --commit-filter 'git commit-tree -S "$@";' <COMMIT>..HEAD
<COMMIT>
提交ID 在哪里(例如abc123e5
)。
这样做的好处是不会干扰提交元数据(包括提交日期)。
如果您还希望停止在每次提交时提示您输入GPG密码,请参见以下答案:https : //askubuntu.com/a/805550
注意:从切换gpg
到gpg2
GIT签名将需要您在GPG 2中重新导入私钥。
git config commit.gpgsign true
。