volver ultimo remoto locales especifico eliminar deshacer cambios anterior git github

ultimo - ¿Cómo puedo eliminar un commit en GitHub?



git eliminar commit remoto (21)

Nota: consulte la alternativa a git rebase -i en los comentarios a continuación:

git reset --soft HEAD^

Primero, elimine la confirmación en su repositorio local. Puedes hacerlo usando git rebase -i . Por ejemplo, si es su última confirmación, puede hacer git rebase -i HEAD~2 y eliminar la segunda línea dentro de la ventana del editor que aparece.

Luego, forzar el empuje a GitHub usando git push origin +branchName --force

Consulte el Capítulo 5 de Git Magic: Lecciones de la historia y, a continuación, algunas para obtener más información (es decir, si desea eliminar las confirmaciones más antiguas).

Ah, y si tu árbol de trabajo está sucio, primero debes hacer un git stash , y luego git stash apply un git stash apply .

Yo "accidentalmente" empujé un compromiso a GitHub.

¿Es posible eliminar este commit?

Quiero revertir mi repositorio de GitHub como estaba antes de esta confirmación.


En caso de que desee mantener los cambios de confirmación después de la eliminación:

Tenga en cuenta que esta solución funciona si la confirmación que se eliminará es la última confirmada.

1 - Copie la referencia de confirmación a la que desea volver del registro:

git log

2 - Restablecer git a la referencia de confirmación:

git reset <commit_ref>

3 - Guarda / almacena los cambios locales del compromiso incorrecto para usar más tarde después de presionar a remoto:

git stash

4 - Empuje los cambios al repositorio remoto, (-f o --force):

git push -f

5 - Recuperar los cambios almacenados en el repositorio local:

git stash apply

7 - En caso de que haya archivos nuevos / sin seguimiento en los cambios, debe agregarlos a git antes de confirmar:

git add .

6 - Agregue los cambios adicionales que necesite, luego confirme los archivos necesarios (o use un punto ''.'' En lugar de indicar cada nombre de archivo, para confirmar todos los archivos en el repositorio local:

git commit -m "<new_commit_message>" <file1> <file2> ...

o

git commit -m "<new_commit_message>" .


  1. git log para descubrir la confirmación que desea revertir

  2. git push origin +7f6d03:master mientras que 7f6d03 es la confirmación antes de la confirmación errónea. + fue por force push

Y eso es.

Here hay una muy buena guía que resuelve su problema, ¡fácil y simple!


Agrega / elimina archivos para obtener las cosas de la manera que deseas:

git rm classdir git add sourcedir

Luego enmendar el compromiso:

git commit --amend

La confirmación errónea anterior se editará para reflejar el nuevo estado del índice; en otras palabras, será como si nunca hubiera cometido el error en primer lugar

Tenga en cuenta que solo debe hacer esto si aún no ha empujado. Si ha presionado, entonces solo tendrá que confirmar un arreglo normalmente.


Debe conocer su hash de confirmación del compromiso al que desea revertir. Puede obtenerlo desde una URL de GitHub como: https://github.com/your-organization/your-project/commits/master

Digamos que el hash de la confirmación (a la que desea volver) es "99fb454" (versión larga "99fb45413eb9ca4b3063e07b40402b136a8cf264"), entonces todo lo que tiene que hacer es:

git reset --hard 99fb45413eb9ca4b3063e07b40402b136a8cf264 git push --force


Ejecuta este comando en tu terminal.

git reset HEAD~n

Puede eliminar las últimas n confirmaciones del repositorio local, por ejemplo, HEAD ~ 2. Procede con la fuerza git push en tu repositorio.

git push -f origin <branch>

¡Espero que esto ayude!


Elimine la confirmación más reciente, conservando el trabajo que ha realizado:

git reset --soft HEAD~1

Elimina la confirmación más reciente, destruyendo el trabajo que has hecho:

git reset --hard HEAD~1


En GitHub Desktop , simplemente puede hacer clic derecho en la confirmación y revertirla, lo que creará una nueva confirmación que deshace los cambios.

La confirmación accidental aún estará en su historial (lo que puede ser un problema si, por ejemplo, ha comprometido accidentalmente una clave de API o contraseña) pero el código será revertido.

Esta es la opción más simple y fácil, la respuesta aceptada es más completa.


Encuentre la especificación de referencia de la confirmación que desea que sea el jefe de su rama en Github y use el siguiente comando:

git push origin +[ref]:[branchName]

En su caso, si solo desea retroceder un compromiso, busque el comienzo del ref para ese compromiso, por ejemplo, es 7f6d03, y el nombre de la rama que desea cambiar, por ejemplo, es maestro, y Haz lo siguiente:

git push origin +7f6d03:master

El carácter más se interpreta como --force , que será necesario ya que está reescribiendo el historial.

Tenga en cuenta que cada vez que --force un compromiso puede reescribir el historial de otras personas y fusionar su sucursal. Sin embargo, si detecta el problema rápidamente (antes de que alguien más fusione su sucursal), no tendrá ningún problema.


Guarda tus cambios locales primero en algún lado (copia de seguridad)

Puede examinar sus confirmaciones recientes y luego seleccionar un hash de confirmación haciendo clic en el botón "Copiar el SHA completo" para enviarlo al portapapeles.

Si su último hash de confirmación es, digamos g0834hg304gh3084gh (por ejemplo)

Tienes que correr:

git push origin +g0834hg304gh3084gh:master

Usando el hash que has copiado anteriormente para convertirlo en la revisión "HEAD".

Agregue los cambios locales que desee. Hecho ;)


No es muy bueno reescribir la historia. Si usamos git revert <commit_id> , se crea un compromiso inverso limpio de dicho ID de confirmación.

De esta manera, la historia no se vuelve a escribir, sino que todos saben que ha habido una reversión.


Para GitHub: restablezca sus confirmaciones (HARD) en su repositorio local y cree una nueva rama. Empuje nuevo. Eliminar rama antigua. (Cree una nueva como la rama predeterminada si está eliminando la rama maestra)


Para eliminar la confirmación del repositorio remoto:

git push -f origin last_known_good_commit:branch_name

Para eliminar la confirmación de su repositorio local:

git reset --hard HEAD~1

link


Para preservar la estructura de ramificación y fusión es importante utilizar la opción --preserve-merges al realizar la rebase:

git rebase --preserve-merges -i HEAD^^


Para una reversión fácil, si es solo un error (tal vez usted bifurcó un repo, luego terminó empujando al original en lugar de a uno nuevo) aquí hay otra posibilidad:

git reset --hard 71c27777543ccfcb0376dcdd8f6777df055ef479

Obviamente, intercambie ese número por el número de confirmación que desea devolver.

Todo desde entonces se eliminará una vez que empujes de nuevo. Para ello, el siguiente paso sería:

git push --force


Si desea eliminar hacer rebase interactiva,

git rebase -i HEAD~4

4 represents total number of commits to display count your commit and cambiarlo en consecuencia

y elimine la confirmación que desee de la lista ...

guardar cambios con Ctrl + X (ubuntu) o : wq (centos)

2º método, revertir,

git revert 29f4a2 #your commit ID

Esto revertirá el compromiso específico.



Usa git revert para revertir tu empuje.

git-revert - Revertir algunas confirmaciones existentes

git revert [--edit | --no-edit] [-n] [-m parent-number] [-s] <commit>... git revert --continue git revert --quit git revert --abort

Revertir los cambios que introducen los parches relacionados y registrar algunas confirmaciones nuevas que los registran. Esto requiere que su árbol de trabajo esté limpio (sin modificaciones de la confirmación HEAD).


Si está haciendo esto porque tiene datos confidenciales en una confirmación, el uso de las otras respuestas aquí no es seguro (a excepción de subutux, que ampliaré).

La guía github sobre esto recomienda usar una herramienta externa, pero yo prefiero usar la incorporada.

En primer lugar, haga una copia de seguridad de su repositorio . Entonces:

git filter-branch --force --index-filter / ''git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA'' / --prune-empty --tag-name-filter cat -- --all

Después de esto, asegúrese de que el repositorio esté en el estado que desea . Es posible que desee diferenciar contra la copia de seguridad.

Si estás seguro de que es correcto, entonces:

#get rid of old unreferenced commits (including the data you want to remove) git gc --prune=now git push origin --force --all

Es posible que desee mantener la copia de seguridad local por un tiempo, por si acaso.


1. git reset HEAD^ --hard 2. git push origin -f

Este trabajo para mí.


git push -f origin HEAD^:master

Eso debería "deshacer" el empuje.