Mi github tiene 100 commits en este momento. Necesito revertir el repositorio para confirmar 80, y eliminar todos los posteriores.
¿Por qué? Se supone que este repositorio es para la fusión de usuarios diversos. Un montón de fusiones entraron como confirmaciones de mí, debido a la edición excesiva. Eso se debió a un etiquetado incorrecto de mis sucursales remotas, donde 3 desarrolladores fueron etiquetados entre sí. Necesito reiniciar a ese punto, y luego tirar hacia adelante.
Quería volver a redactar, como en este ejemplo: ¿Cómo puedo eliminar un commit en GitHub?
Sin embargo, git quiere que haga mucho manejo de conflictos. ¿Hay una manera más sencilla?
git push -f origin branch
. Simplemente lo pasé mal, porque me lo perdí.git push origin HEAD --force
lugar de hacerlo,git push -f origin branch
ya que me estaba dando unerror: src refspec branch does not match any.
errorPara deshacer la confirmación más reciente, hago esto:
Primero:
obtenga la última identificación SHA para deshacer.
Eso creará una nueva confirmación que hace exactamente lo contrario de su confirmación. Luego puede impulsar esta nueva confirmación para llevar su aplicación al estado que tenía antes, y su historial de git mostrará estos cambios en consecuencia.
Esto es bueno para rehacer de inmediato algo que acabas de cometer, y creo que es el caso más frecuente para mí.
Como Mike mencionó, también puede hacer esto:
fuente
git revert HEAD
revertirá la última confirmación sin tener que buscar el hash.De otra manera:
Verifique la sucursal que desea revertir, luego restablezca su copia de trabajo local de nuevo a la confirmación de que desea ser la última en el servidor remoto (todo después de que se vaya adiós). Para hacer esto, en SourceTree, hice clic derecho en y seleccioné "Restablecer BRANCHNAME a esta confirmación".
Luego navegue al directorio local de su repositorio y ejecute este comando:
Esto borrará todas las confirmaciones después de la actual en su repositorio local, pero solo para esa rama.
fuente
La mayoría de las sugerencias suponen que necesita destruir de alguna manera las últimas 20 confirmaciones, por lo que significa "reescribir el historial", pero no tiene que hacerlo.
Simplemente cree una nueva rama desde el commit # 80 y trabaje en esa rama en adelante. Los otros 20 commits permanecerán en la antigua rama huérfana.
Si quiere que su nueva sucursal tenga el mismo nombre, recuerde que la sucursal son básicamente etiquetas. Simplemente cambie el nombre de su antigua rama a otra, luego cree la nueva rama en commit # 80 con el nombre que desee.
fuente
Al hacer actualizaciones de rama desde el maestro, noto que a veces hago clic en exceso y hago que la rama tambié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 revert -m 1 HEAD
fuente
En github, la manera fácil es eliminar la rama remota en la interfaz de usuario de github, en la pestaña de ramas. Debe asegurarse de eliminar la siguiente configuración para que la rama sea borrable:
Ahora vuelva a crearlo en su repositorio local para señalar el punto de confirmación anterior. y agregarlo de nuevo al repositorio remoto.
Luego empuje la rama local a remoto
Vuelva a agregar la rama predeterminada y la protección de rama, etc.
fuente