Sch*_*ern 11
你可以,但它必须重写你的整个历史记录才能这样做.
对提交进行签名会更改提交,从而更改其提交ID.由于提交ID取决于先前的提交ID,因此必须更改之后的所有提交.而且无论如何你都要签名.
如果它是其他人没有工作的个人存储库,那么这不是问题.如果它是与其他协作者的存储库,则将其视为执行主要的rebase.
您可以git filter-branch使用该-S选项重做每次提交.
git filter-branch --commit-filter 'git commit-tree -S "$@";' -- --all
Run Code Online (Sandbox Code Playgroud)
至于不必为每次提交输入密码,您需要配置gpg为使用gpg-agent.如果您熟悉ssh-agent它是一个类似的想法,那么您只需将密码提供一次并将其保存在内存中即可.如何操作取决于您的操作系统和设置.在OS XI上让GPG工具处理它.
如果您只想过滤特定提交并仅签名,则可以使用filter-branch:
git filter-branch --commit-filter 'if [ "$GIT_COMMITTER_EMAIL" = "user@domain.com" ];
then git commit-tree -S "$@";
else git commit-tree "$@";
fi' HEAD
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因,您只想签署自己的提交,这将非常有用.
我的方法是
git rebase --exec 'git commit --amend --no-edit -n -S' -i 8fd7b22
git push --force
Run Code Online (Sandbox Code Playgroud)
从开始的所有提交8fd7b22都将重新签名,除了签名之外,没有其他更改。
| 归档时间: |
|
| 查看次数: |
2071 次 |
| 最近记录: |