ℹ️ Skipped - page is already crawled
| Filter | Status | Condition | Details |
|---|---|---|---|
| HTTP status | PASS | download_http_code = 200 | HTTP 200 |
| Age cutoff | PASS | download_stamp > now() - 6 MONTH | 0.7 months ago |
| History drop | PASS | isNull(history_drop_reason) | No drop reason |
| Spam/ban | PASS | fh_dont_index != 1 AND ml_spam_score = 0 | ml_spam_score=0 |
| Canonical | PASS | meta_canonical IS NULL OR = '' OR = src_unparsed | Not set |
| Property | Value |
|---|---|
| URL | https://blog.openreplay.com/es/git-deshacer-commit/ |
| Last Crawled | 2026-03-18 08:04:32 (19 days ago) |
| First Indexed | 2025-02-21 14:34:15 (1 year ago) |
| HTTP Status Code | 200 |
| Meta Title | Deshaciendo Commits de Git Después de un Push: Revirtiendo Cambios de Manera Segura en Repositorios Remotos |
| Meta Description | Usa git reset, git revert y git reflog para deshacer. |
| Meta Canonical | null |
| Boilerpipe Text | Como desarrolladores, todos hemos estado ahí - haces un commit, lo haces push a un repositorio remoto, y luego te das cuenta de que necesitas deshacer esos cambios. No te preocupes, Git proporciona herramientas poderosas para ayudarte a revertir commits de manera segura, incluso después de que hayan sido pushed. En este artículo, exploraremos varios escenarios y técnicas para deshacer commits de Git y recuperarnos de errores, asegurando la integridad del historial de tu proyecto.
Puntos Clave
Usa
git reset
para deshacer commits locales antes de hacer push.
Usa
git revert
para deshacer de manera segura commits pusheados creando un nuevo commit que invierte los cambios.
Evita hacer force push a repositorios remotos, ya que puede causar problemas para los colaboradores.
Usa
git reflog
para recuperar commits perdidos después de un hard reset.
Entendiendo los Commits de Git
Antes de sumergirnos en deshacer commits, repasemos rápidamente cómo funcionan los commits en Git:
Un commit representa una instantánea de tu repositorio en un punto específico en el tiempo.
Cada commit tiene un identificador único (hash SHA-1) y una referencia a su(s) commit(s) padre.
El puntero
HEAD
se refiere al commit actual en el que te encuentras en tu repositorio local.
Deshaciendo el Último Commit Local
Si aún no has hecho push de tu último commit y quieres deshacerlo, tienes algunas opciones:
Usando
git reset
git reset --soft HEAD~1
: Este comando mueve el puntero
HEAD
un commit hacia atrás, manteniendo los cambios del último commit en el stage.
git reset --mixed HEAD~1
(o
git reset HEAD~1
): Este es el comportamiento predeterminado de
git reset
. Mueve el puntero
HEAD
un commit hacia atrás y quita los cambios del stage, pero los mantiene en tu directorio de trabajo.
git reset --hard HEAD~1
: Este comando descarta todos los cambios del último commit, eliminándolo efectivamente de tu repositorio. Usa esto con precaución, ya que elimina permanentemente los cambios.
Usando
git commit --amend
Si quieres modificar el último commit sin cambiar el historial de commits, puedes usar
git commit --amend
. Esto te permite actualizar el mensaje del commit o agregar/eliminar cambios al último commit.
# Realiza los cambios necesarios
git
add
.
git
commit
--amend
Deshaciendo Commits Que Han Sido Pusheados
Cuando necesites deshacer commits que ya han sido pusheados a un repositorio remoto, deberías usar
git revert
para crear un nuevo commit que deshaga los cambios.
Usando
git revert
Identifica el commit que quieres revertir usando
git log
.
Usa
git revert <commit-hash>
para crear un nuevo commit que deshaga el commit especificado.
git
revert
1a2b3c4d
Haz push del nuevo commit al repositorio remoto.
git
push
origin
main
Advertencias Sobre Force Pushing
Evita usar
git push --force
para sobrescribir el historial del repositorio remoto, ya que puede causar problemas para otros colaboradores. En su lugar, usa
git revert
para mantener un historial de commits limpio y transparente.
Deshaciendo Múltiples Commits
Para deshacer múltiples commits, puedes usar
git revert
con un rango de commits o realizar un rebase interactivo.
Revirtiendo un Rango de Commits
git
revert
<
oldest-commit-has
h
>
..
<
latest-commit-has
h
>
Rebase Interactivo
Usa
git rebase -i <commit-before-the-one-you-want-to-change>
para iniciar un rebase interactivo.
En el editor, cambia
pick
a
drop
para los commits que quieres eliminar.
Guarda y sal del editor para completar el rebase.
Recuperando Trabajo Perdido
Si accidentalmente realizaste un hard reset y perdiste commits, puedes usar
git reflog
para recuperarlos.
Ejecuta
git reflog
para ver el registro de todas las acciones realizadas en el repositorio.
Identifica el commit que quieres restaurar y anota su hash SHA-1.
Usa
git checkout <commit-hash>
para cambiar a ese commit.
Crea una nueva rama para guardar los cambios recuperados:
git checkout -b recovered-branch
.
Mejores Prácticas
Usa
git revert
en lugar de
git reset
cuando deshagas commits pusheados para mantener un historial limpio.
Ten cuidado al usar
git reset --hard
, ya que elimina permanentemente los cambios.
Comunícate regularmente con tu equipo para evitar conflictos al deshacer commits en ramas compartidas.
Preguntas Frecuentes
Usa `git revert -m 1 <merge-commit-hash>` para revertir un commit de merge, especificando el número de padre (`-m 1`) a mantener.
Resuelve los conflictos manualmente, haz stage de los cambios y luego ejecuta `git revert --continue` para completar la operación de revert.
Conclusión
Deshacer commits de Git, ya sean locales o pusheados, es un requerimiento común en el flujo de trabajo de cualquier desarrollador. Al comprender los diferentes enfoques, como
git reset
,
git revert
y
git reflog
, puedes manejar con confianza varios escenarios y mantener un historial de proyecto limpio y preciso. Recuerda seguir las mejores prácticas, comunicarte con tu equipo y siempre priorizar la integridad de tu repositorio.
Recursos Adicionales
Documentación Oficial de Git
Git Revert vs Reset: Explicado
Dominando Git: Consejos y Trucos
Listen to your bugs 🧘, with OpenReplay
See how users use your app and resolve issues fast.
Loved by thousands of developers |
| Markdown | [](https://github.com/openreplay/openreplay?utm_source=openreplay_blog&utm_content=github_stars)
- Product
- [Session Replay](https://openreplay.com/product/feature/session-replay?utm_source=openreplay_blog&utm_content=session_replay)
- [DevTools](https://openreplay.com/product/feature/developer-tools?utm_source=openreplay_blog&utm_content=devtools)
- [Product Analytics](https://openreplay.com/product/core/product-analytics?utm_source=openreplay_blog&utm_content=product_analytics)
- [Co-Browsing](https://openreplay.com/product/feature/co-browsing?utm_source=openreplay_blog&utm_content=cobrowsing)
- [Engineering](https://openreplay.com/solutions/teams/engineering/?utm_source=openreplay_blog&utm_content=engineering)
- [Product Management](https://openreplay.com/solutions/teams/product-management/?utm_source=openreplay_blog&utm_content=product)
- [Customer Support](https://openreplay.com/solutions/teams/customer-support/?utm_source=openreplay_blog&utm_content=customer_support)
- [Research & Design](https://openreplay.com/solutions/teams/research-design/?utm_source=openreplay_blog&utm_content=design)
- [Pricing](https://openreplay.com/pricing?utm_source=openreplay_blog&utm_content=pricing)
- [Docs](https://docs.openreplay.com/en/home/?utm_source=openreplay_blog&utm_content=docs)
- [](https://github.com/openreplay/openreplay?utm_source=openreplay_blog&utm_content=github_stars)
- [Self-Host](https://openreplay.com/pricing/#self-host)
- [Try Cloud Free](https://openreplay.com/pricing?utm_source=openreplay_blog&utm_content=try_cloud_button)
- [Self-Host](https://openreplay.com/pricing/#self-host)
[Try Cloud](https://openreplay.com/pricing?utm_source=openreplay_blog&utm_content=try_cloud_button)
- [Product]()
- [Session Replay](https://openreplay.com/product/feature/session-replay?utm_source=openreplay_blog&utm_content=session_replay)
- [DevTools](https://openreplay.com/product/feature/developer-tools?utm_source=openreplay_blog&utm_content=devtools)
- [Product Analytics](https://openreplay.com/product/core/product-analytics?utm_source=openreplay_blog&utm_content=product_analytics)
- [Co-Browsing](https://openreplay.com/product/feature/co-browsing?utm_source=openreplay_blog&utm_content=cobrowsing)
- [Solutions]()
- [Engineering](https://openreplay.com/solutions/teams/engineering/?utm_source=openreplay_blog&utm_content=engineering)
- [Product Management](https://openreplay.com/solutions/teams/product-management/?utm_source=openreplay_blog&utm_content=product)
- [Customer Support](https://openreplay.com/solutions/teams/customer-support/?utm_source=openreplay_blog&utm_content=customer_support)
- [Research & Design](https://openreplay.com/solutions/teams/research-design/?utm_source=openreplay_blog&utm_content=design)
- [Pricing](https://openreplay.com/pricing?utm_source=openreplay_blog&utm_content=pricing)
- [Docs](https://docs.openreplay.com/en/home/?utm_source=openreplay_blog&utm_content=docs)
[Back](https://blog.openreplay.com/es/)
# Deshaciendo Commits de Git Después de un Push: Revirtiendo Cambios de Manera Segura en Repositorios Remotos
 [OpenReplay Team](https://blog.openreplay.com/authors/openreplay-team)
Nov 30, 2024 · 3 min read

Como desarrolladores, todos hemos estado ahí - haces un commit, lo haces push a un repositorio remoto, y luego te das cuenta de que necesitas deshacer esos cambios. No te preocupes, Git proporciona herramientas poderosas para ayudarte a revertir commits de manera segura, incluso después de que hayan sido pushed. En este artículo, exploraremos varios escenarios y técnicas para deshacer commits de Git y recuperarnos de errores, asegurando la integridad del historial de tu proyecto.
## Puntos Clave
- Usa `git reset` para deshacer commits locales antes de hacer push.
- Usa `git revert` para deshacer de manera segura commits pusheados creando un nuevo commit que invierte los cambios.
- Evita hacer force push a repositorios remotos, ya que puede causar problemas para los colaboradores.
- Usa `git reflog` para recuperar commits perdidos después de un hard reset.
## Entendiendo los Commits de Git
Antes de sumergirnos en deshacer commits, repasemos rápidamente cómo funcionan los commits en Git:
- Un commit representa una instantánea de tu repositorio en un punto específico en el tiempo.
- Cada commit tiene un identificador único (hash SHA-1) y una referencia a su(s) commit(s) padre.
- El puntero `HEAD` se refiere al commit actual en el que te encuentras en tu repositorio local.
## Deshaciendo el Último Commit Local
Si aún no has hecho push de tu último commit y quieres deshacerlo, tienes algunas opciones:
### Usando `git reset`
1. `git reset --soft HEAD~1`: Este comando mueve el puntero `HEAD` un commit hacia atrás, manteniendo los cambios del último commit en el stage.
2. `git reset --mixed HEAD~1` (o `git reset HEAD~1`): Este es el comportamiento predeterminado de `git reset`. Mueve el puntero `HEAD` un commit hacia atrás y quita los cambios del stage, pero los mantiene en tu directorio de trabajo.
3. `git reset --hard HEAD~1`: Este comando descarta todos los cambios del último commit, eliminándolo efectivamente de tu repositorio. Usa esto con precaución, ya que elimina permanentemente los cambios.
### Usando `git commit --amend`
Si quieres modificar el último commit sin cambiar el historial de commits, puedes usar `git commit --amend`. Esto te permite actualizar el mensaje del commit o agregar/eliminar cambios al último commit.
```
# Realiza los cambios necesarios
git add .
git commit --amend
```
## Deshaciendo Commits Que Han Sido Pusheados
Cuando necesites deshacer commits que ya han sido pusheados a un repositorio remoto, deberías usar `git revert` para crear un nuevo commit que deshaga los cambios.
### Usando `git revert`
1. Identifica el commit que quieres revertir usando `git log`.
2. Usa `git revert <commit-hash>` para crear un nuevo commit que deshaga el commit especificado.
```
git revert 1a2b3c4d
```
1. Haz push del nuevo commit al repositorio remoto.
```
git push origin main
```
### Advertencias Sobre Force Pushing
Evita usar `git push --force` para sobrescribir el historial del repositorio remoto, ya que puede causar problemas para otros colaboradores. En su lugar, usa `git revert` para mantener un historial de commits limpio y transparente.
## Deshaciendo Múltiples Commits
Para deshacer múltiples commits, puedes usar `git revert` con un rango de commits o realizar un rebase interactivo.
### Revirtiendo un Rango de Commits
```
git revert <oldest-commit-hash>..<latest-commit-hash>
```
### Rebase Interactivo
1. Usa `git rebase -i <commit-before-the-one-you-want-to-change>` para iniciar un rebase interactivo.
2. En el editor, cambia `pick` a `drop` para los commits que quieres eliminar.
3. Guarda y sal del editor para completar el rebase.
## Recuperando Trabajo Perdido
Si accidentalmente realizaste un hard reset y perdiste commits, puedes usar `git reflog` para recuperarlos.
1. Ejecuta `git reflog` para ver el registro de todas las acciones realizadas en el repositorio.
2. Identifica el commit que quieres restaurar y anota su hash SHA-1.
3. Usa `git checkout <commit-hash>` para cambiar a ese commit.
4. Crea una nueva rama para guardar los cambios recuperados: `git checkout -b recovered-branch`.
## Mejores Prácticas
- Usa `git revert` en lugar de `git reset` cuando deshagas commits pusheados para mantener un historial limpio.
- Ten cuidado al usar `git reset --hard`, ya que elimina permanentemente los cambios.
- Comunícate regularmente con tu equipo para evitar conflictos al deshacer commits en ramas compartidas.
## Preguntas Frecuentes
¿Cómo deshago un commit de merge?
Usa \`git revert -m 1 \<merge-commit-hash\>\` para revertir un commit de merge, especificando el número de padre (\`-m 1\`) a mantener.
¿Qué sucede si encuentro conflictos al revertir un commit?
Resuelve los conflictos manualmente, haz stage de los cambios y luego ejecuta \`git revert --continue\` para completar la operación de revert.
## Conclusión
Deshacer commits de Git, ya sean locales o pusheados, es un requerimiento común en el flujo de trabajo de cualquier desarrollador. Al comprender los diferentes enfoques, como `git reset`, `git revert` y `git reflog`, puedes manejar con confianza varios escenarios y mantener un historial de proyecto limpio y preciso. Recuerda seguir las mejores prácticas, comunicarte con tu equipo y siempre priorizar la integridad de tu repositorio.
## Recursos Adicionales
- [Documentación Oficial de Git](https://git-scm.com/docs)
- [Git Revert vs Reset: Explicado](https://example.com/git-revert-vs-reset)
- [Dominando Git: Consejos y Trucos](https://example.com/mastering-git)
## Listen to your bugs 🧘, with OpenReplay
See how users use your app and resolve issues fast.
[Self-Host](https://openreplay.com/pricing/#self-host) [Try Cloud Free](https://openreplay.com/pricing?utm_source=openreplay_blog&utm_content=try_cloud_button)
Loved by thousands of developers
### More articles from OpenReplay Blog
Star us on GitHub 
OpenReplay is a session replay and analytics tool, built for developers and self-hosted for full control over your data.
 SOC 2 Type II Compliant
© 2025 OpenReplay is a registered trademark of Asayer, Inc.
###### Product
[What's New](https://openreplay.com/releases?utm_source=openreplay_blog&utm_content=what_is_new) [Pricing](https://openreplay.com/pricing?utm_source=openreplay_blog&utm_content=pricing) [Integrations](https://openreplay.com/platform/integrations-api/?utm_source=openreplay_blog&utm_content=integrations)
###### Deploy
[AWS](https://docs.openreplay.com/deployment/deploy-aws) [Azure](https://docs.openreplay.com/deployment/deploy-azure) [Google Cloud](https://docs.openreplay.com/deployment/deploy-gcp) [Kubernetes](https://docs.openreplay.com/deployment/deploy-kubernetes)
###### Resources
[Docs](https://docs.openreplay.com/?utm_source=openreplay_blog&utm_content=docs) [Blog](https://blog.openreplay.com/?utm_source=openreplay_blog&utm_content=blog) [Session Replay Guide](https://openreplay.com/resources/session-replay-guide?utm_source=openreplay_blog)
###### Compare
[Compare vs Fullstory](https://openreplay.com/compare/openreplay-vs-fullstory?utm_source=openreplay_blog&utm_content=compare_vs_fullstory) [Compare vs LogRocket](https://openreplay.com/compare/openreplay-vs-logrocket?utm_source=openreplay_blog&utm_content=compare_vs_logrocket) [Compare vs PostHog](https://openreplay.com/compare/openreplay-vs-posthog?utm_source=openreplay_blog&utm_content=compare_vs_posthog) [Compare vs Hotjar](https://openreplay.com/compare/openreplay-vs-hotjar?utm_source=openreplay_blog&utm_content=compare_vs_hotjar)
###### Contact
[Sales](mailto:sales@openreplay.com) [Terms](https://openreplay.com/legal/terms) [Privacy](https://openreplay.com/legal/privacy)
###### Connect
OpenReplay relies on [cookies](https://openreplay.com/legal/privacy) to make its website easier to use.
I Accept |
| Readable Markdown | Como desarrolladores, todos hemos estado ahí - haces un commit, lo haces push a un repositorio remoto, y luego te das cuenta de que necesitas deshacer esos cambios. No te preocupes, Git proporciona herramientas poderosas para ayudarte a revertir commits de manera segura, incluso después de que hayan sido pushed. En este artículo, exploraremos varios escenarios y técnicas para deshacer commits de Git y recuperarnos de errores, asegurando la integridad del historial de tu proyecto.
## Puntos Clave
- Usa `git reset` para deshacer commits locales antes de hacer push.
- Usa `git revert` para deshacer de manera segura commits pusheados creando un nuevo commit que invierte los cambios.
- Evita hacer force push a repositorios remotos, ya que puede causar problemas para los colaboradores.
- Usa `git reflog` para recuperar commits perdidos después de un hard reset.
## Entendiendo los Commits de Git
Antes de sumergirnos en deshacer commits, repasemos rápidamente cómo funcionan los commits en Git:
- Un commit representa una instantánea de tu repositorio en un punto específico en el tiempo.
- Cada commit tiene un identificador único (hash SHA-1) y una referencia a su(s) commit(s) padre.
- El puntero `HEAD` se refiere al commit actual en el que te encuentras en tu repositorio local.
## Deshaciendo el Último Commit Local
Si aún no has hecho push de tu último commit y quieres deshacerlo, tienes algunas opciones:
### Usando `git reset`
1. `git reset --soft HEAD~1`: Este comando mueve el puntero `HEAD` un commit hacia atrás, manteniendo los cambios del último commit en el stage.
2. `git reset --mixed HEAD~1` (o `git reset HEAD~1`): Este es el comportamiento predeterminado de `git reset`. Mueve el puntero `HEAD` un commit hacia atrás y quita los cambios del stage, pero los mantiene en tu directorio de trabajo.
3. `git reset --hard HEAD~1`: Este comando descarta todos los cambios del último commit, eliminándolo efectivamente de tu repositorio. Usa esto con precaución, ya que elimina permanentemente los cambios.
### Usando `git commit --amend`
Si quieres modificar el último commit sin cambiar el historial de commits, puedes usar `git commit --amend`. Esto te permite actualizar el mensaje del commit o agregar/eliminar cambios al último commit.
```
# Realiza los cambios necesarios
git add .
git commit --amend
```
## Deshaciendo Commits Que Han Sido Pusheados
Cuando necesites deshacer commits que ya han sido pusheados a un repositorio remoto, deberías usar `git revert` para crear un nuevo commit que deshaga los cambios.
### Usando `git revert`
1. Identifica el commit que quieres revertir usando `git log`.
2. Usa `git revert <commit-hash>` para crear un nuevo commit que deshaga el commit especificado.
```
git revert 1a2b3c4d
```
1. Haz push del nuevo commit al repositorio remoto.
```
git push origin main
```
### Advertencias Sobre Force Pushing
Evita usar `git push --force` para sobrescribir el historial del repositorio remoto, ya que puede causar problemas para otros colaboradores. En su lugar, usa `git revert` para mantener un historial de commits limpio y transparente.
## Deshaciendo Múltiples Commits
Para deshacer múltiples commits, puedes usar `git revert` con un rango de commits o realizar un rebase interactivo.
### Revirtiendo un Rango de Commits
```
git revert <oldest-commit-hash>..<latest-commit-hash>
```
### Rebase Interactivo
1. Usa `git rebase -i <commit-before-the-one-you-want-to-change>` para iniciar un rebase interactivo.
2. En el editor, cambia `pick` a `drop` para los commits que quieres eliminar.
3. Guarda y sal del editor para completar el rebase.
## Recuperando Trabajo Perdido
Si accidentalmente realizaste un hard reset y perdiste commits, puedes usar `git reflog` para recuperarlos.
1. Ejecuta `git reflog` para ver el registro de todas las acciones realizadas en el repositorio.
2. Identifica el commit que quieres restaurar y anota su hash SHA-1.
3. Usa `git checkout <commit-hash>` para cambiar a ese commit.
4. Crea una nueva rama para guardar los cambios recuperados: `git checkout -b recovered-branch`.
## Mejores Prácticas
- Usa `git revert` en lugar de `git reset` cuando deshagas commits pusheados para mantener un historial limpio.
- Ten cuidado al usar `git reset --hard`, ya que elimina permanentemente los cambios.
- Comunícate regularmente con tu equipo para evitar conflictos al deshacer commits en ramas compartidas.
## Preguntas Frecuentes
Usa \`git revert -m 1 \<merge-commit-hash\>\` para revertir un commit de merge, especificando el número de padre (\`-m 1\`) a mantener.
Resuelve los conflictos manualmente, haz stage de los cambios y luego ejecuta \`git revert --continue\` para completar la operación de revert.
## Conclusión
Deshacer commits de Git, ya sean locales o pusheados, es un requerimiento común en el flujo de trabajo de cualquier desarrollador. Al comprender los diferentes enfoques, como `git reset`, `git revert` y `git reflog`, puedes manejar con confianza varios escenarios y mantener un historial de proyecto limpio y preciso. Recuerda seguir las mejores prácticas, comunicarte con tu equipo y siempre priorizar la integridad de tu repositorio.
## Recursos Adicionales
- [Documentación Oficial de Git](https://git-scm.com/docs)
- [Git Revert vs Reset: Explicado](https://example.com/git-revert-vs-reset)
- [Dominando Git: Consejos y Trucos](https://example.com/mastering-git)
## Listen to your bugs 🧘, with OpenReplay
See how users use your app and resolve issues fast.
Loved by thousands of developers |
| Shard | 103 (laksa) |
| Root Hash | 1248022234581704903 |
| Unparsed URL | com,openreplay!blog,/es/git-deshacer-commit/ s443 |