重写Git存储库的历史记录时,如何删除签名(由git commit -s
或git commit --signoff
创建)?
git filter-branch
的{{1}}似乎只支持commit-filter
使用的变量:
git commit-tree
答案 0 :(得分:10)
签名只是邮件正文的一部分。因此,您需要使用git filter-branch --msg-filter
运行命令来查找以Signed-off-by:
开头的行并将其删除。
像
这样的东西git filter-branch --msg-filter "sed /^Signed-off-by:/d"
应该这样做。
答案 1 :(得分:1)
要删除所有签名或特定人/电子邮件地址的所有签名,请参阅Brian的回答。
根据Brian提供的信息(即签名是提交消息的一部分),很容易弄清楚如何删除或更改单个签名:
在具有签名的提交的父级上运行交互式rebase(git rebase -i
),在弹出的编辑器中找到提交,并将pick
替换为reword
。在接下来显示的编辑器中,根据自己的喜好调整提交的消息。