¿Cómo cambiar la cadena específica en todas las confirmaciones de posts de git?

Quiero grep y cambiar cadena específica en todos los posts que se envían a Github. ¿Es posible? ¿Cómo? Sé cómo cambiar el último post bye git commit --amend pero quiero cambiar todos los posts de todos los commits.

Utilice git-filter-branch con su opción de --msg-filter , por ejemplo:

 git filter-branch -f --msg-filter 'sed "s/git-svn.*$//g"' -- --all 

Tenga en count que esto cambiará prácticamente todos sus identificadores de confirmación en su repository, por lo que todos los que trabajen en su proyecto necesitarán hacer una copy nueva.

Vea esta publicación en el blog para más discusión:

http://mm0hai.net/blog/2011/03/10/rewriting-git-commit-message-history.html

Tenga en count que el command anterior solo se ejecuta en su copy local, y necesita presionar a GitHub para que sus actualizaciones se reflejen allí …

Paso a paso

Primero clone una nueva copy de su repository, usando el indicador --mirror :

 $ git clone --mirror git://example.com/my-repo.git 

Este es un repository simple, lo que significa que sus files normales no serán visibles, pero es una copy completa de la database de Git de su repository, y en este punto debe hacer una copy de security para asegurarse de que no pierde nada. .

Ahora puede ejecutar git-filter-branch para corregir sus posts de confirmación:

 git filter-branch -f --msg-filter 'sed "s/git-svn.*$//g"' -- --all 

Una vez que esté satisfecho con el estado actualizado de su repository, empújelo nuevamente (tenga en count que debido a que su command de clonación utilizó el indicador --mirror , este impulso actualizará todas las references en su server remoto):

 $ git push 

En este punto, ya está listo para que todos, incluido usted mismo, abandonen sus copys antiguas del repository y realicen nuevos clones de los nuevos datos pródigos.

… Me veo obligado a señalar que The BFG es a menudo mucho mejor que git-filter-branch para limpiar el historial de Git, pero en este caso solo git-filter-branch suena perfecto para sus necesidades.