Reescribiendo el historial de Git: ¿Cómo elimino una firma?

Al reescribir el historial de un repository de Git, ¿cómo se eliminan los cierres (según lo creado por git commit -s o git commit --signoff )?

git filter-branch commit-filter git filter-branch parece solo soportar las variables usadas por git commit-tree :

 GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL GIT_COMMITTER_DATE EMAIL 

Los cierres de session son solo parte del cuerpo del post. Por lo tanto, querrá usar git filter-branch --msg-filter para ejecutar un command para search líneas que comiencen con Signed-off-by: y eliminarlas.

Algo como

 git filter-branch --msg-filter "sed /^Signed-off-by:/d" 

debería hacer el truco.

Para eliminar todas las aprobaciones o todas las aprobaciones por una persona / dirección de correo electrónico en particular, consulte la respuesta de Brian.

Con base en la información que brindó Brian (es decir, que las aprobaciones son parte del post de compromiso), fue fácil averiguar cómo eliminar o cambiar las autorizaciones individuales:

Ejecute una rebase interactiva ( git rebase -i ) en el padre de la confirmación que tiene la firma, encuentre la confirmación en el editor que aparece y reemplace pick con la reword . En el editor que aparece a continuación, ajuste el post de compromiso a su gusto.