首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在交互重基压缩后保留提交gpg签名?

如何在交互重基压缩后保留提交gpg签名?
EN

Stack Overflow用户
提问于 2013-09-18 14:00:00
回答 3查看 13.1K关注 0票数 35

当我想压缩一些通过交互式rebase提交的

代码语言:javascript
运行
复制
git rebase -i HEAD~3

然后:

代码语言:javascript
运行
复制
pick cbd03e3 Final commit (signed)
s f522f5d bla-bla-bla (signed)
s 09a7b7c bla-bla (signed)

# Rebase c2e142e..09a7b7c onto c2e142e
...

尽管所有这些提交都具有相同的签名,但最终提交仍然没有gpg-签名。是否有可能在交互式重基压缩后保留提交gpg签名?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-25 18:18:15

正如Cup蛋糕所述,您不能从未压缩提交中保留旧签名,但如果您像这样重基,则可以签署新的压缩提交:

git rebase --interactive --gpg-sign=myemail@example.com HEAD~4

添加--gpg-sign=myemail@example.com作为参数将对最终压缩提交进行签名。

票数 66
EN

Stack Overflow用户

发布于 2013-09-18 14:42:08

你这样做是没有道理的。gpg签名的全部目的是验证代码没有被篡改。如果你能在修改历史记录后保留签名,那就会使整个目的落空。

我目前没有用gpg对我的Git代码进行签名,所以我不知道确切的细节,但我猜它可能会散列树的最终提交对象。当您像在您的示例中那样重基时,Final commit将有一个不同的sha1 ID,因此它与重基之前的对象不同,因此可能不可能拥有相同的gpg签名,而且正如我所说的,这是没有意义的。

票数 15
EN

Stack Overflow用户

发布于 2021-04-27 07:37:06

一个选项是将commit.gpgSign设置设置为true。这将始终对提交进行签名,包括重基提交。

在回购中在本地进行:

代码语言:javascript
运行
复制
git config commit.gpgSign true

要在全球范围内这样做:

代码语言:javascript
运行
复制
git config --global commit.gpgSign true
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18874281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档