Git rebase 和签名提交

标签 git version-control sign

让我们假设一个 git 存储库,其中满足以下条件:

  • 大多数提交都已签名。
  • 经常使用 rebase ,以便有一个干净的历史。
  • 有时多人在同一个分支上工作。
  • 假设对提交进行签名意味着对等效差异进行签名,而不是对存储库的整个状态进行签名(尽管签名提交也对祖先的哈希进行了签名)

  • 现在,我想重新设置一个分支,在那里我完成了部分工作,并且一位同事推送了一些提交;并且我想在我所做的提交上“保留”签名(即重新签署我使用新历史所做的所有提交,即使在 merge 冲突的情况下),但不要签署不是我写的工作(即。我更喜欢丢失同事提交的签名而不是签名)。

    我可以用 git rebase -S (就像在对 this question 的回答中提出的那样);但这也会签署我同事的 promise 。

    有没有办法做到这一点?

    最佳答案

    请记住,这是一个笨拙的答案,您应该强烈考虑 Cupcake@ answer作为您正在尝试做的事情的阻滞剂。 (即使您只对提交引入的“差异”进行签名,如果在 rebase 期间发生冲突会怎样?谁对冲突解决引入的代码进行签名?)

    也就是说,您可以做的是 rebase ,松开 gpg 签名。然后用 git filter-branchsome magic对您使用您的 key 编写的提交以及其他人使用他们的 key 编写的提交进行重新 gpg 签名。

    关于Git rebase 和签名提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33978743/

    相关文章:

    git - 代码构建将 Artifact 推回 github 的问题

    version-control - 功能切换与功能分支

    maven-2 - Maven签名不仅可以生成jar,还可以依赖项

    ios - 软件项目和配套服务器代码的 Git 存储库的理想工作流程?

    git - 如何只更新特定的 git 子模块?

    git - 在本地master分支删除了一个文件,我如何从远程取回它?

    java - bazaar作为版本控制工具怎么样?

    git - 将 git repo 分解成多个较小的

    集成了facebook登录的android应用程序,如何生成发布 key ?

    java - 如何在不提供 -storepass 的情况下使用 jarsign 对 jar 进行签名?