Una vez que envié accidentalmente el código que no debería enviarse a GIT, y envié varias confirmaciones antes del descubrimiento. Ahora quiero eliminar permanentemente esta confirmación en el servidor GIT. Los pasos específicos se registran de la siguiente manera.
Suponiendo que la rama actual es maestra, la situación de confirmación actual es la siguiente, y ahora se deben eliminar commit_id_2 y commit_id_4:
commit_id_1
commit_id_2
commit_id_3
commit_id_4
commit_id_5
....
1. Crear una nueva rama para restablecer la operación
git checkout -b desarrollar git push orign -u desarrollar
En segundo lugar, en el desarrollo de la nueva rama, restablezca la confirmación a la confirmación antes de commit_id_4
git reset --hard <commit_id_5>
3. Envíe una nueva rama para sobrescribir la información de confirmación anterior
git push orign HEAD --force
En cuarto lugar, de acuerdo con el orden original para restaurar la confirmación, no es necesario eliminar y luego enviar
git cherry-pick commit_id_3 git cherry-pick commit_id_1 git push orign desarrollar
Cinco, elimine la rama maestra original, desproteja una nueva rama del desarrollo como maestro
git push orign - eliminar maestro // O git push orign: master // Nota: master es generalmente la rama predeterminada, debe configurar la rama predeterminada para que se desarrolle antes de eliminar git checkout -b master git push orign -u maestro // Finalmente, restablece el maestro a la rama predeterminada
La operación es engorrosa, pero es relativamente segura. Si hay alguna buena manera, puede compartirla. .