tag - ¿Cómo puedo revertir un repositorio de github a una confirmación específica?
git push tag (4)
Mi github tiene 100 mensajes en este momento. Necesito revertir el repositorio para confirmar 80, y eliminar todos los subsiguientes.
¿Por qué? Este repositorio se supone que es para la fusión de varios usuarios. Un montón de fusiones entraron como confirmaciones mías, debido a una edición excesiva. Eso se debió a un etiquetado incorrecto de mis sucursales remotas, donde 3 desarrolladores estaban etiquetados entre sí. Necesito restablecer ese punto y luego tirar hacia adelante.
Quería reajustar, como en este ejemplo: ¿Cómo puedo eliminar un commit en GitHub?
Sin embargo, git quiere que yo haga un montón de manejo de conflictos. ¿Hay alguna forma más simple?
Cuando hago actualizaciones de bifurcaciones desde el maestro, me doy cuenta de que a veces hago un clic excesivo y también hago que la bifurcación se fusione con el maestro. Encontré una manera de deshacer eso.
Si su último compromiso fue una fusión, se necesita un poco más de amor:
git revertir -m 1 CABEZA
De otra manera:
Verifique la sucursal que desea revertir, luego restablezca su copia de trabajo local a la confirmación que desea que sea la última en el servidor remoto (todo lo que sucederá después de que vaya a irse, adiós). Para hacer esto, en SourceTree hice clic derecho en y seleccioné "Restablecer BRANCHNAME para este compromiso".
Luego navegue al directorio local de su repositorio y ejecute este comando:
git -c diff.mnemonicprefix = false -c core.quotepath = false push -v -f --tags REPOSITORY_NAME BRANCHNAME: BRANCHNAME
Esto borrará todas las confirmaciones después de la actual en su repositorio local, pero solo para esa rama.
Para deshacer el commit más reciente hago esto:
Primero:
git log
obtén la última ID de SHA para deshacer.
git revert SHA
Eso creará un nuevo compromiso que hace exactamente lo contrario de su compromiso. Luego, puede impulsar este nuevo compromiso para llevar su aplicación al estado en el que estaba antes, y su historial de git mostrará estos cambios en consecuencia.
Esto es bueno para rehacer de inmediato algo que acaba de cometer, lo que encuentro es más frecuente en mi caso.
Como Mike mencionó, también puedes hacer esto:
git revert HEAD
git reset --hard <old-commit-id>
git push -f <remote-name> <branch-name>
Nota: Como está escrito en los comentarios a continuación, usar esto es peligroso en un entorno colaborativo: estás reescribiendo el historial