重写Git历史记录:如何删除签名?

时间:2010-09-11 06:21:20

标签: git

重写Git存储库的历史记录时,如何删除签名(由git commit -sgit commit --signoff创建)?

git filter-branch的{​​{1}}似乎只支持commit-filter使用的变量:

git commit-tree

2 个答案:

答案 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。在接下来显示的编辑器中,根据自己的喜好调整提交的消息。