Cancele parte de una sola línea de compromiso específico, después de git push

Alguien empujó la siguiente línea a nuestro repository:

git = ['a', 'w', 'e', 's', 'o', 'm', 'e', BugSyntaxErrorBug] 

Pero en realidad debería ser:

 git = ['a', 'w', 'e', 's', 'o', 'm', 'e'] 

Dado que se hicieron muchos empujes, y quiero reescribirlo desde este impulso específico. La idea detrás de esto es que si alguien va a extraer una versión anterior de este código, el código funcionará.

Gracias 🙂

Así es como lo haría.

labelr estos para que pueda restaurar si algo sale mal.

 git tag MyOldCommit BADCOMMIT git tag MyOldMaster master 

si lo necesita, puede recuperar el maestro sin cambios con

 git branch -f master MyOldMaster 

ahora revisa el compromiso malo con una nueva twig

 git checkout -b MyFixedCommit BADCOMMIT 

después de eliminar los bytes ofensivos, reemplace el antiguo commmit por uno nuevo.

 git commit --amend -m"my commit message" 

vuelve a tu antigua twig principal de twigs

 git checkout master 

rebase master (¡y solo maestro!) en MyFixedCommit

 git rebase --onto MyFixedCommit BADCOMMIT master 

git volverá a reproducir (confirmar por confirmación) los cambios de BADCOMMIT a la punta del master en MyfixedCommit. Tendrás que resolver cualquier conflicto que Git encuentre en el path.

¡¡Ya que estás reescribiendo el historial, la cadena de compromiso del maestro ahora será diferente de las tags y twigs de otros usuarios que hicieron reference a la antigua cadena de compromiso principal !!