ℹ️ 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.2 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://www.datacamp.com/es/tutorial/git-revert-merge |
| Last Crawled | 2026-04-07 14:17:08 (4 days ago) |
| First Indexed | 2024-11-05 12:24:05 (1 year ago) |
| HTTP Status Code | 200 |
| Meta Title | Git Revertir Combinar Confirmar: Una guía con ejemplos | DataCamp |
| Meta Description | Aprende a deshacer de forma segura una fusión Git utilizando `git revert`, preservando el historial de confirmaciones y resolviendo posibles conflictos. |
| Meta Canonical | null |
| Boilerpipe Text | Podemos poner en peligro una aplicación al fusionar código problemático, ya sea por integrar accidentalmente un trabajo inacabado en la rama principal o por pasar por alto un fallo crítico que se coló en las pruebas automatizadas.
En este artículo, te guiaré a través del proceso de utilización de
git revert
para deshacer una fusión de forma segura, garantizando que el historial de confirmaciones permanece intacto y se preserva la integridad del proyecto.
Cómo
git revert
Obras
Podemos pensar en
git revert
como la versión de Git del comando deshacer. Sin embargo, el comando
git revert
no borra confirmaciones ni salta a un estado anterior de la rama. En su lugar, crea una nueva confirmación que revierte los cambios de una confirmación concreta.
La sintaxis para revertir una confirmación con el hash
es:
git revert <commit_hash>
Podemos listar los commits junto con sus identificadores hash utilizando el comando
git log
. La salida de
git log
lista las confirmaciones de la más reciente a la más antigua, así:
Por ejemplo, para revertir la confirmación que implementa la función restar, utilizaríamos el comando
git revert 7ba24a3e62d4d37182428ccfaa070baa222b1151
Utilizando
git revert
podemos deshacer los cambios de una confirmación concreta sin afectar al historial de confirmaciones.
Ten en cuenta que
git revert
no es mágico, y dependiendo del historial de confirmaciones, puede dar lugar a un conflicto que haya que resolver manualmente.
Ventajas de
git revert
Sobre los cambios manuales
¿Por qué es útil
git revert
si podemos necesitar resolver un conflicto manualmente? ¿No sería más fácil deshacer manualmente los cambios? Veamos sus ventajas:
Preserva el historial:
git revert
crea una nueva confirmación que deshace los cambios de una confirmación especificada preservando todo el historial de confirmaciones. Esto ayuda a mantener un historial transparente de cambios y anulaciones.
Inversión atómica: Garantiza que las inversiones sean atómicas y coherentes. Cuando borramos y confirmamos cambios manualmente, existe el riesgo de que se produzcan errores humanos.
Conciencia de conflicto: Garantiza que se nos avise mediante conflictos si hay alguna integración o cambio que dependa de la confirmación original. Esto puede parecer incómodo, pero evita efectos secundarios no deseados.
Metadata: La nueva confirmación creada por git revert incluye metadatos y un mensaje de confirmación que describe contextualmente lo que se ha revertido, ayudando a comprenderlo en el futuro. Sin
git revert
, este contexto podría perderse.
Revertir una Fusión en Diferentes Escenarios
En esta sección aprenderemos a deshacer una fusión. Por poner un ejemplo, supondremos que estamos fusionando una rama llamada
feature
en la rama
main
ejecutando el comando desde la rama
main
:
git merge feature
Lo que aprendamos aquí puede aplicarse a dos ramas cualesquiera sustituyendo los nombres adecuadamente.
Revertir una fusión que no tiene confirmación asociada
El comando
git merge
no siempre crea una nueva confirmación. Sólo se crea una confirmación si la rama
main
ha divergido de la rama
feature
. Como
git revert
requiere un commit para operar una, no podemos utilizarla en este caso.
Las ramas
main
y
feature
divergen cuando se crean nuevos commits en
main
que no son ancestros de la rama
feature
. En otras palabras, se crearon nuevos commits en
main
después de que se creara
feature
.
Si las ramas no han divergido, cuando ejecutemos el comando
git merge feature
en la rama principal, Git utilizará el avance rápido para fusionar. Esto significa que desplaza el
HEAD
de la rama
main
al
HEAD
de la rama
feature
.
Podemos observar que esto ha ocurrido mirando el resultado de
git merge
:
Para deshacer dicha fusión, sólo tenemos que mover la
HEAD
de la rama
main
de vuelta a donde estaba. Para ello, nosotros:
Identifica el
HEAD
anterior utilizando el
git reflog
Restablece el
HEAD
al anterior utilizando
git reset --hard
, sustituyendo
por el anterior
HEAD
.
La salida de
git reflog
tendrá este aspecto:
Podemos identificar la anterior
HEAD
fijándonos en la línea que dice "checkout: moving from feature to main" (escribe
feature
y
main
porque esos son los nombres de nuestras ramas).
En este caso, la cabeza anterior es
fe59838
. Para mover el
HEAD
de la rama principal de nuevo a ella y deshacer la fusión, utilizamos entonces el comando
git reset --hard fe59838
Revertir una fusión que tiene una confirmación asociada
Si la rama
main
y la rama
feature
han divergido, cuando fusionamos dos ramas, se crea un nuevo commit, llamado commit de fusión.
La confirmación de fusión aplica los cambios de una rama a otra. En este caso, los cambios en
feature
se aplican a la rama
main
.
Para revertir los cambios en la rama
main
, utilizamos
git revert
en la confirmación de fusión. Esto creará una nueva confirmación que deshará los cambios introducidos en la rama
main
con la fusión, restaurando efectivamente el estado de la rama principal al que tenía antes de la fusión.
En primer lugar, tenemos que identificar el hash de la confirmación de fusión. Podemos hacerlo utilizando el comando
git log
:
Como la confirmación de fusión tiene dos padres, la sintaxis de
git revert
es ligeramente diferente. Necesitamos utilizar la opción
-m 1
para especificar que queremos revertir los cambios relativos a la rama
main
:
git revert -m 1 b8dab2c8611e324ed0d273133987415350e6d10d
Resolución de conflictos al revertir un commit
A veces pueden surgir conflictos al revertir una confirmación, sobre todo si la confirmación que se está revirtiendo entra en conflicto con cambios posteriores en el código base. En tales casos:
Git pausará la reversión: Tenemos que resolver manualmente los conflictos. Git marcará los archivos conflictivos y requerirá intervención.
Resuelve los conflictos: Abrimos cada archivo conflictivo, resolvemos los conflictos marcados por Git y guardamos los cambios.
Pon en escena los archivos resueltos:
git add
Continúa la reversión:
git revert --continue
Conclusión
Utilizar
git revert
para deshacer confirmaciones de fusión garantiza que cada cambio y corrección quede documentado en el historial de confirmaciones.
Además, comprender los escenarios apropiados para aplicar
git reset
frente a
git revert
nos permite tomar mejores decisiones, especialmente cuando consideramos flujos de trabajo colaborativos o cambios sólo locales.
Puedes leer más sobre este tema en la sección de preguntas más frecuentes. Si quieres aprender más sobre Git, te recomiendo estos recursos:
Curso Aprende Git
Git Squash Commits: Una guía con ejemplos
Git Prune: Qué es la poda Git y cómo usarla
Cambiar de rama Git: Una guía con ejemplos prácticos
Fuerza de tracción Git: Cómo sobrescribir una rama local con una remota |
| Markdown | [Ir al contenido principal](https://www.datacamp.com/es/tutorial/git-revert-merge#main)
ES
[English](https://www.datacamp.com/tutorial/git-revert-merge)[Español](https://www.datacamp.com/es/tutorial/git-revert-merge)[Português](https://www.datacamp.com/pt/tutorial/git-revert-merge)[DeutschBeta](https://www.datacamp.com/de/tutorial/git-revert-merge)[FrançaisBeta](https://www.datacamp.com/fr/tutorial/git-revert-merge)[ItalianoBeta](https://www.datacamp.com/it/tutorial/git-revert-merge)[TürkçeBeta](https://www.datacamp.com/tr/tutorial/git-revert-merge)[Bahasa IndonesiaBeta](https://www.datacamp.com/id/tutorial/git-revert-merge)[Tiếng ViệtBeta](https://www.datacamp.com/vi/tutorial/git-revert-merge)[NederlandsBeta](https://www.datacamp.com/nl/tutorial/git-revert-merge)[हिन्दीBeta](https://www.datacamp.com/hi/tutorial/git-revert-merge)[日本語Beta](https://www.datacamp.com/ja/tutorial/git-revert-merge)[한국어Beta](https://www.datacamp.com/ko/tutorial/git-revert-merge)[PolskiBeta](https://www.datacamp.com/pl/tutorial/git-revert-merge)[RomânăBeta](https://www.datacamp.com/ro/tutorial/git-revert-merge)[РусскийBeta](https://www.datacamp.com/ru/tutorial/git-revert-merge)[SvenskaBeta](https://www.datacamp.com/sv/tutorial/git-revert-merge)[ไทยBeta](https://www.datacamp.com/th/tutorial/git-revert-merge)[中文(简体)Beta](https://www.datacamp.com/zh/tutorial/git-revert-merge)
***
[Más información](https://support.datacamp.com/hc/es/articles/21821832799255-Idiomas-disponibles-en-DataCamp)
[¿Encontraste un error?]()
Tutoriales
[Blogs](https://www.datacamp.com/es/blog)
[Tutoriales](https://www.datacamp.com/es/tutorial)
[docs](https://www.datacamp.com/es/doc)
[Podcasts](https://www.datacamp.com/es/podcast)
[Hojas De Trucos](https://www.datacamp.com/es/cheat-sheet)
[programando juntos](https://www.datacamp.com/es/code-along)
[Boletín](https://dcthemedian.substack.com/)
Categoría
Categoría
Technologies
Descubre contenidos por herramientas y tecnología
[Agentes de IA](https://www.datacamp.com/es/tutorial/category/ai-agents)[AWS](https://www.datacamp.com/es/tutorial/category/aws)[Azure](https://www.datacamp.com/es/tutorial/category/microsoft-azure)[Cara de abrazo](https://www.datacamp.com/es/tutorial/category/Hugging-Face)[ChatGPT](https://www.datacamp.com/es/tutorial/category/chatgpt)[Databricks](https://www.datacamp.com/es/tutorial/category/databricks)[dbt](https://www.datacamp.com/es/tutorial/category/dbt)[Docker](https://www.datacamp.com/es/tutorial/category/docker)[Excel](https://www.datacamp.com/es/tutorial/category/excel)[Git](https://www.datacamp.com/es/tutorial/category/git)[Grandes modelos lingüísticos](https://www.datacamp.com/es/tutorial/category/large-language-models)[Hojas de cálculo](https://www.datacamp.com/es/tutorial/category/spreadsheets)[IA Generativa](https://www.datacamp.com/es/tutorial/category/generative-ai)[Inteligencia empresarial](https://www.datacamp.com/es/tutorial/category/learn-business-intelligence)[Java](https://www.datacamp.com/es/tutorial/category/java)[Kafka](https://www.datacamp.com/es/tutorial/category/apache-kafka)[Kubernetes](https://www.datacamp.com/es/tutorial/category/kubernetes)[MongoDB](https://www.datacamp.com/es/tutorial/category/mongodb)[MySQL](https://www.datacamp.com/es/tutorial/category/mysql)[NoSQL](https://www.datacamp.com/es/tutorial/category/nosql)[OpenAI](https://www.datacamp.com/es/tutorial/category/OpenAI)[Plataforma en la nube de Google](https://www.datacamp.com/es/tutorial/category/google-cloud-platform)[PostgreSQL](https://www.datacamp.com/es/tutorial/category/postgresql)[Power BI](https://www.datacamp.com/es/tutorial/category/power-bi)[PySpark](https://www.datacamp.com/es/tutorial/category/pyspark)[Python](https://www.datacamp.com/es/tutorial/category/python)[R](https://www.datacamp.com/es/tutorial/category/r-programming)[Snowflake](https://www.datacamp.com/es/tutorial/category/snowflake)[SQL](https://www.datacamp.com/es/tutorial/category/sql)[SQLite](https://www.datacamp.com/es/tutorial/category/sqlite)[Tableau](https://www.datacamp.com/es/tutorial/category/tableau)
Categoría
Temas
Descubre contenidos por temas de ciencia de datos
[Alfabetización informática](https://www.datacamp.com/es/tutorial/category/data-literacy)[Análisis de datos](https://www.datacamp.com/es/tutorial/category/data-analysis)[Aprendizaje automático](https://www.datacamp.com/es/tutorial/category/machine-learning)[Aprendizaje profundo](https://www.datacamp.com/es/tutorial/category/deep-learning)[Ciencia de datos](https://www.datacamp.com/es/tutorial/category/data-science)[DataLab](https://www.datacamp.com/es/tutorial/category/datalab)[Grandes datos](https://www.datacamp.com/es/tutorial/category/big-data)[IA para empresas](https://www.datacamp.com/es/tutorial/category/ai-for-business)[Ingeniería de datos](https://www.datacamp.com/es/tutorial/category/data-engineering)[Inteligencia Artificial](https://www.datacamp.com/es/tutorial/category/ai)[MLOps](https://www.datacamp.com/es/tutorial/category/mlops)[Nube](https://www.datacamp.com/es/tutorial/category/cloud)[Procesamiento del Lenguaje Natural](https://www.datacamp.com/es/tutorial/category/natural-language-processing)[Visualización de datos](https://www.datacamp.com/es/tutorial/category/data-visualization)
[Buscar cursos](https://www.datacamp.com/courses-all)
categoría
1. [Inicio](https://www.datacamp.com/es)
2. [Tutoriales](https://www.datacamp.com/es/tutorial)
3. [Git](https://www.datacamp.com/es/tutorial/category/git)
# Git Revertir Combinar Confirmar: Una guía con ejemplos
Aprende a deshacer de forma segura una fusión Git utilizando \`git revert\`, preservando el historial de confirmaciones y resolviendo posibles conflictos.
Actualizado 5 nov 2024 · 7 min leer
## ¿Formar a más personas?
Consigue que tu equipo acceda a la plataforma completa de DataCamp para empresas.
[Empresas](https://www.datacamp.com/es/business)Para obtener una solución a medida, [reserva una demostración](https://www.datacamp.com/es/business/demo-2).
Podemos poner en peligro una aplicación al fusionar código problemático, ya sea por integrar accidentalmente un trabajo inacabado en la rama principal o por pasar por alto un fallo crítico que se coló en las pruebas automatizadas.
En este artículo, te guiaré a través del proceso de utilización de `git revert` para deshacer una fusión de forma segura, garantizando que el historial de confirmaciones permanece intacto y se preserva la integridad del proyecto.
## Conviértete en Ingeniero de Datos
Desarrolla tus habilidades en Python para convertirte en un ingeniero de datos profesional.
[Empieza gratis](https://www.datacamp.com/tracks/professional-data-engineer)
## Cómo `git revert` Obras
Podemos pensar en `git revert` como la versión de Git del comando deshacer. Sin embargo, el comando `git revert` no borra confirmaciones ni salta a un estado anterior de la rama. En su lugar, crea una nueva confirmación que revierte los cambios de una confirmación concreta.

La sintaxis para revertir una confirmación con el hash es:
```
git revert <commit_hash>
```
Podemos listar los commits junto con sus identificadores hash utilizando el comando `git log`. La salida de `git log` lista las confirmaciones de la más reciente a la más antigua, así:

Por ejemplo, para revertir la confirmación que implementa la función restar, utilizaríamos el comando
```
git revert 7ba24a3e62d4d37182428ccfaa070baa222b1151
```
Utilizando `git revert` podemos deshacer los cambios de una confirmación concreta sin afectar al historial de confirmaciones.
Ten en cuenta que `git revert` no es mágico, y dependiendo del historial de confirmaciones, puede dar lugar a un conflicto que haya que resolver manualmente.
## Ventajas de `git revert` Sobre los cambios manuales
¿Por qué es útil `git revert` si podemos necesitar resolver un conflicto manualmente? ¿No sería más fácil deshacer manualmente los cambios? Veamos sus ventajas:
- Preserva el historial: `git revert` crea una nueva confirmación que deshace los cambios de una confirmación especificada preservando todo el historial de confirmaciones. Esto ayuda a mantener un historial transparente de cambios y anulaciones.
- Inversión atómica: Garantiza que las inversiones sean atómicas y coherentes. Cuando borramos y confirmamos cambios manualmente, existe el riesgo de que se produzcan errores humanos.
- Conciencia de conflicto: Garantiza que se nos avise mediante conflictos si hay alguna integración o cambio que dependa de la confirmación original. Esto puede parecer incómodo, pero evita efectos secundarios no deseados.
- Metadata: La nueva confirmación creada por git revert incluye metadatos y un mensaje de confirmación que describe contextualmente lo que se ha revertido, ayudando a comprenderlo en el futuro. Sin `git revert`, este contexto podría perderse.
## Revertir una Fusión en Diferentes Escenarios
En esta sección aprenderemos a deshacer una fusión. Por poner un ejemplo, supondremos que estamos fusionando una rama llamada `feature` en la rama `main` ejecutando el comando desde la rama `main`:
```
git merge feature
```
Lo que aprendamos aquí puede aplicarse a dos ramas cualesquiera sustituyendo los nombres adecuadamente.
### Revertir una fusión que no tiene confirmación asociada
El comando `git merge` no siempre crea una nueva confirmación. Sólo se crea una confirmación si la rama `main` ha divergido de la rama `feature`. Como `git revert` requiere un commit para operar una, no podemos utilizarla en este caso.
Las ramas `main` y `feature` divergen cuando se crean nuevos commits en `main` que no son ancestros de la rama `feature`. En otras palabras, se crearon nuevos commits en `main` después de que se creara `feature`.
Si las ramas no han divergido, cuando ejecutemos el comando `git merge feature` en la rama principal, Git utilizará el avance rápido para fusionar. Esto significa que desplaza el `HEAD` de la rama `main` al `HEAD` de la rama `feature`.

Podemos observar que esto ha ocurrido mirando el resultado de `git merge`:

Para deshacer dicha fusión, sólo tenemos que mover la `HEAD` de la rama `main` de vuelta a donde estaba. Para ello, nosotros:
1. Identifica el `HEAD` anterior utilizando el `git reflog`
2. Restablece el `HEAD` al anterior utilizando `git reset --hard`, sustituyendo por el anterior `HEAD`.
La salida de `git reflog` tendrá este aspecto:

Podemos identificar la anterior `HEAD` fijándonos en la línea que dice "checkout: moving from feature to main" (escribe `feature` y `main` porque esos son los nombres de nuestras ramas).
En este caso, la cabeza anterior es `fe59838`. Para mover el `HEAD` de la rama principal de nuevo a ella y deshacer la fusión, utilizamos entonces el comando
```
git reset --hard fe59838
```

### Revertir una fusión que tiene una confirmación asociada
Si la rama `main` y la rama `feature` han divergido, cuando fusionamos dos ramas, se crea un nuevo commit, llamado commit de fusión.

La confirmación de fusión aplica los cambios de una rama a otra. En este caso, los cambios en `feature` se aplican a la rama `main`.
Para revertir los cambios en la rama `main`, utilizamos `git revert` en la confirmación de fusión. Esto creará una nueva confirmación que deshará los cambios introducidos en la rama `main` con la fusión, restaurando efectivamente el estado de la rama principal al que tenía antes de la fusión.
En primer lugar, tenemos que identificar el hash de la confirmación de fusión. Podemos hacerlo utilizando el comando `git log`:

Como la confirmación de fusión tiene dos padres, la sintaxis de `git revert` es ligeramente diferente. Necesitamos utilizar la opción `-m 1` para especificar que queremos revertir los cambios relativos a la rama `main`:
```
git revert -m 1 b8dab2c8611e324ed0d273133987415350e6d10d
```

## Resolución de conflictos al revertir un commit
A veces pueden surgir conflictos al revertir una confirmación, sobre todo si la confirmación que se está revirtiendo entra en conflicto con cambios posteriores en el código base. En tales casos:
1. Git pausará la reversión: Tenemos que resolver manualmente los conflictos. Git marcará los archivos conflictivos y requerirá intervención.
2. Resuelve los conflictos: Abrimos cada archivo conflictivo, resolvemos los conflictos marcados por Git y guardamos los cambios.
3. Pon en escena los archivos resueltos: `git add`
4. Continúa la reversión: `git revert --continue`
## Conclusión
Utilizar `git revert` para deshacer confirmaciones de fusión garantiza que cada cambio y corrección quede documentado en el historial de confirmaciones.
Además, comprender los escenarios apropiados para aplicar `git reset` frente a `git revert` nos permite tomar mejores decisiones, especialmente cuando consideramos flujos de trabajo colaborativos o cambios sólo locales.
Puedes leer más sobre este tema en la sección de preguntas más frecuentes. Si quieres aprender más sobre Git, te recomiendo estos recursos:
- [Curso Aprende Git](https://www.datacamp.com/es/courses/introduction-to-git)
- [Git Squash Commits: Una guía con ejemplos](https://www.datacamp.com/es/tutorial/git-squash-commits)
- [Git Prune: Qué es la poda Git y cómo usarla](https://www.datacamp.com/es/tutorial/git-prune)
- [Cambiar de rama Git: Una guía con ejemplos prácticos](https://www.datacamp.com/es/tutorial/git-switch-branch)
- [Fuerza de tracción Git: Cómo sobrescribir una rama local con una remota](https://www.datacamp.com/es/tutorial/git-pull-force)
## Preguntas frecuentes
### ¿Puedo revertir una fusión ya realizada con git revert?
Sí, ese es el principal caso de uso de `git revert` en las fusiones. Si los cambios son locales, entonces `git reset` es una forma más fácil de deshacer la fusión.
Para que los demás vean los cambios, tenemos que empujarlos al repositorio remoto. Así que, para deshacer una fusión ya realizada, lo hacemos:
```
git revert -m 1
git push origin
```
Sustituyendo por el hash de la confirmación de la fusión y por el nombre de la rama donde se realizó la fusión.
### ¿Se borrará el commit merge después de usar git revert?
**No. La confirmación de fusión permanece en el historial, pero sus cambios son deshechos por la nueva confirmación. El objetivo de deshacer una fusión con `git revert` es preservar el historial de confirmaciones.**
### ¿Existen formas distintas de git revert para deshacer una fusión?
Una forma alternativa de deshacer una fusión es utilizar `git reset`. Este método restablece la rama a un estado anterior a la confirmación de fusión. Este enfoque es más intrusivo y puede causar problemas si otros colaboradores ya han basado su trabajo en los commits que pensamos resetear. Por tanto, sólo se recomienda cuando estamos seguros de que no afectará a los demás.
```
git reset --hard
git push --force
```
Sustituyendo por el hash de la confirmación a la que queremos volver.
### ¿Cuándo debo usar git reset para deshacer una fusión?
**Te recomiendo que sólo utilices `git reset` para deshacer una fusión cuando ésta sólo se haya producido localmente y aún no se haya enviado.**
Temas
[Git](https://www.datacamp.com/tutorial/category/git)
***
Temas
[Git](https://www.datacamp.com/tutorial/category/git)
[Tutorial de Git Revert y Git Reset para principiantes](https://www.datacamp.com/es/tutorial/git-reset-revert-tutorial)
[Tutorial de GIT Push y Pull](https://www.datacamp.com/es/tutorial/git-push-pull)
[Tutorial de GitHub y Git para principiantes](https://www.datacamp.com/es/tutorial/github-and-git-tutorial-for-beginners)
[Git Prune: Qué es la poda Git y cómo usarla](https://www.datacamp.com/es/tutorial/git-prune)
[Git pull force: Cómo sobrescribir una rama local con una remota](https://www.datacamp.com/es/tutorial/git-pull-force)
[Git rename branch: Cómo cambiar el nombre de una rama local o remota](https://www.datacamp.com/es/tutorial/git-rename-branch-local-remote)
Los mejores cursos de ingeniería de datos
programa
### [Ingeniero de datos en Python](https://www.datacamp.com/tracks/data-engineer-in-python)
40 h
Adquiere habilidades demandadas para ingerir, limpiar y gestionar datos de forma eficaz, así como para programar y supervisar canalizaciones, lo que te diferenciará en el campo de la ingeniería de datos.
[Ver detalles](https://www.datacamp.com/tracks/data-engineer-in-python)
[Iniciar curso](https://www.datacamp.com/es/users/sign_up?redirect=%2Ftracks%2Fdata-engineer-in-python%2Fcontinue)
programa
### [Ingeniero de Datos Asociado en SQL](https://www.datacamp.com/tracks/associate-data-engineer-in-sql)
30 h
¡Aprende los fundamentos de la ingeniería de datos: diseño de bases de datos y almacenamiento de datos, trabajando con tecnologías como PostgreSQL y Snowflake\!
[Ver detalles](https://www.datacamp.com/tracks/associate-data-engineer-in-sql)
[Iniciar curso](https://www.datacamp.com/es/users/sign_up?redirect=%2Ftracks%2Fassociate-data-engineer-in-sql%2Fcontinue)
programa
### [Ingeniero de Datos Profesional en Python](https://www.datacamp.com/tracks/professional-data-engineer)
40 h
Sumérgete a fondo en las habilidades avanzadas y las herramientas de última generación que revolucionan las funciones de la ingeniería de datos hoy en día con nuestro curso de Ingeniero de Datos Profesional.
[Ver detalles](https://www.datacamp.com/tracks/professional-data-engineer)
[Iniciar curso](https://www.datacamp.com/es/users/sign_up?redirect=%2Ftracks%2Fprofessional-data-engineer%2Fcontinue)
[Ver más](https://www.datacamp.com/category/data-engineering)
Relacionado
[TutorialTutorial de Git Revert y Git Reset para principiantes](https://www.datacamp.com/es/tutorial/git-reset-revert-tutorial)
Una guía tutorial para principiantes que muestra cómo utilizar los comandos Git Revert y Reset.
[](https://www.datacamp.com/portfolio/keitazoumana)
Zoumana Keita
[TutorialTutorial de GIT Push y Pull](https://www.datacamp.com/es/tutorial/git-push-pull)
Aprende a realizar solicitudes de Git PUSH y PULL con GitHub Desktop y la línea de comandos.
Olivia Smith
[TutorialTutorial de GitHub y Git para principiantes](https://www.datacamp.com/es/tutorial/github-and-git-tutorial-for-beginners)
Un tutorial para principiantes que muestra cómo funciona el control de versiones Git y por qué es crucial para los proyectos de ciencia de datos.
[](https://www.datacamp.com/portfolio/kingabzpro)
Abid Ali Awan
[TutorialGit Prune: Qué es la poda Git y cómo usarla](https://www.datacamp.com/es/tutorial/git-prune)
La poda Git es un comando Git que elimina del repositorio los objetos que ya no son accesibles desde ninguna confirmación o rama, ayudando a liberar espacio en disco.
[TutorialGit pull force: Cómo sobrescribir una rama local con una remota](https://www.datacamp.com/es/tutorial/git-pull-force)
Aprende por qué git pull --force no es la mejor forma de sobrescribir una rama local con la versión remota, y descubre el método adecuado utilizando git fetch y git reset.
[TutorialGit rename branch: Cómo cambiar el nombre de una rama local o remota](https://www.datacamp.com/es/tutorial/git-rename-branch-local-remote)
Aprende a renombrar ramas Git locales y remotas utilizando el terminal o la interfaz gráfica de usuario (GUI) de clientes populares como GitHub.
[Ver más](https://www.datacamp.com/es/tutorial/category/git)
[Ver más](https://www.datacamp.com/es/tutorial/category/git)
## Desarrolla tus habilidades de datos con la aplicación móvil de DataCamp
Progresa desde cualquier dispositivo móvil con nuestros cursos y desafíos de programación diarios de 5 minutos.
**Aprende**
[Aprende Python](https://www.datacamp.com/es/blog/how-to-learn-python-expert-guide)[Aprende IA](https://www.datacamp.com/es/blog/how-to-learn-ai)[Aprende Power BI](https://www.datacamp.com/es/learn/power-bi)[Aprende Ingeniería de datos](https://www.datacamp.com/es/category/data-engineering)[Evaluaciones](https://www.datacamp.com/es/signal)[Programas de carrera](https://www.datacamp.com/es/tracks/career)[Programas de habilidades](https://www.datacamp.com/es/tracks/skill)[Cursos](https://www.datacamp.com/es/courses-all)[Plan de ciencia de datos](https://www.datacamp.com/es/blog/data-science-roadmap)
**Cursos**
[Cursos de Python](https://www.datacamp.com/es/category/python)[Cursos de R](https://www.datacamp.com/es/category/r)[Cursos de SQL](https://www.datacamp.com/es/category/sql)[Cursos de Power BI](https://www.datacamp.com/es/category/power-bi)[Cursos de Tableau](https://www.datacamp.com/es/category/tableau)[Cursos de Alteryx](https://www.datacamp.com/es/category/alteryx)[Cursos de Azure](https://www.datacamp.com/es/category/azure)[Cursos de AWS](https://www.datacamp.com/es/category/aws)[Cursos de Google Cloud](https://www.datacamp.com/es/category/google-cloud)[Cursos de Hojas de cálculo de Google](https://www.datacamp.com/es/category/google-sheets)[Cursos de Excel](https://www.datacamp.com/es/category/excel)[Cursos de IA](https://www.datacamp.com/es/category/artificial-intelligence)[Cursos de Análisis de datos](https://www.datacamp.com/es/category/data-analysis)[Cursos de Visualización de datos](https://www.datacamp.com/es/category/data-visualization)[Cursos de Machine Learning](https://www.datacamp.com/es/category/machine-learning)[Cursos de Ingeniería de datos](https://www.datacamp.com/es/category/data-engineering)[Cursos de Probabilidad y estadística](https://www.datacamp.com/es/category/probability-and-statistics)
**DataLab**
[Comenzar](https://www.datacamp.com/es/datalab)[Precios](https://www.datacamp.com/es/datalab/pricing)[Seguridad](https://www.datacamp.com/es/datalab/security)[Documentacion](https://datalab-docs.datacamp.com/)
**Certificacion**
[Certificaciones](https://www.datacamp.com/es/certification)[Científico de datos](https://www.datacamp.com/es/certification/data-scientist)[Analista de datos](https://www.datacamp.com/es/certification/data-analyst)[Ingeniero de datos](https://www.datacamp.com/es/certification/data-engineer)[Asociado SQL](https://www.datacamp.com/es/certification/sql-associate)[Analista de datos de Power BI](https://www.datacamp.com/es/certification/data-analyst-in-power-bi)[Analista de datos certificado de Tableau](https://www.datacamp.com/es/certification/data-analyst-in-tableau)[Aspectos básicos de Azure](https://www.datacamp.com/es/certification/azure-fundamentals)[Fundamentos de la IA](https://www.datacamp.com/es/certification/ai-fundamentals)
**Recursos**
[Centro de recursos](https://www.datacamp.com/es/resources)[Próximos Eventos](https://www.datacamp.com/es/webinars)[Blog](https://www.datacamp.com/es/blog)[Programando Juntos](https://www.datacamp.com/es/code-along)[Tutoriales](https://www.datacamp.com/es/tutorial)[Docs](https://www.datacamp.com/es/doc)[Código abierto](https://www.datacamp.com/es/open-source)[RDocumentation](https://www.rdocumentation.org/)[Demostración de DataCamp for Business](https://www.datacamp.com/es/business/demo)[Portafolio de datos](https://www.datacamp.com/es/data-portfolio)
**Planes**
[Precios](https://www.datacamp.com/es/pricing)[Estudiantes](https://www.datacamp.com/es/pricing/student)[Para empresas](https://www.datacamp.com/es/business)[Para universidades](https://www.datacamp.com/es/universities)[Descuentos, promociones y ofertas](https://www.datacamp.com/es/promo)[Reembolsar DataCamp](https://www.datacamp.com/es/expense)[DataCamp Donates](https://www.datacamp.com/donates)
**Para empresas**
[Precios para empresas](https://www.datacamp.com/es/business/compare-plans)[Plan Teams](https://www.datacamp.com/es/business/learn-teams)[Plan ilimitado de datos e IA](https://www.datacamp.com/es/business/data-unlimited)[Historias de clientes](https://www.datacamp.com/es/business/customer-stories)[Programa de socios](https://www.datacamp.com/es/business/partner-program)
**Acerca de**
[Sobre nosotros](https://www.datacamp.com/es/about)[Testimonios](https://www.datacamp.com/es/stories)[Carreras](https://www.datacamp.com/es/careers)[Conviértete en instructor](https://www.datacamp.com/es/learn/create)[Prensa](https://www.datacamp.com/es/press)[Equipo directivo](https://www.datacamp.com/es/about/leadership)[Contáctanos](https://support.datacamp.com/hc/en-us/articles/360021185634)[DataCamp English](https://www.datacamp.com/)[DataCamp Português](https://www.datacamp.com/pt)[DataCamp Deutsch](https://www.datacamp.com/de)[DataCamp Français](https://www.datacamp.com/fr)
**Ayuda**
[Centro de ayuda](https://support.datacamp.com/hc/en-us)[Conviértete en afiliado](https://www.datacamp.com/es/affiliates)
[Facebook](https://www.facebook.com/datacampinc/)
[Twitter](https://twitter.com/datacamp)
[LinkedIn](https://www.linkedin.com/school/datacampinc/)
[YouTube](https://www.youtube.com/channel/UC79Gv3mYp6zKiSwYemEik9A)
[Instagram](https://www.instagram.com/datacamp/)
[Política de privacidad](https://www.datacamp.com/es/privacy-policy)[Aviso de cookies](https://www.datacamp.com/es/cookie-notice)[Protección de datos para usuarios en California (CCPA)](https://www.datacamp.com/es/do-not-sell-my-personal-information)[Accesibilidad](https://www.datacamp.com/es/accessibility)[Seguridad](https://www.datacamp.com/es/security)[Condiciones de uso](https://www.datacamp.com/es/terms-of-use)
© 2026 DataCamp, Inc. Todos los derechos reservados. |
| Readable Markdown | Podemos poner en peligro una aplicación al fusionar código problemático, ya sea por integrar accidentalmente un trabajo inacabado en la rama principal o por pasar por alto un fallo crítico que se coló en las pruebas automatizadas. En este artículo, te guiaré a través del proceso de utilización de `git revert` para deshacer una fusión de forma segura, garantizando que el historial de confirmaciones permanece intacto y se preserva la integridad del proyecto.
Cómo `git revert` Obras Podemos pensar en `git revert` como la versión de Git del comando deshacer. Sin embargo, el comando `git revert` no borra confirmaciones ni salta a un estado anterior de la rama. En su lugar, crea una nueva confirmación que revierte los cambios de una confirmación concreta.  La sintaxis para revertir una confirmación con el hash es: Podemos listar los commits junto con sus identificadores hash utilizando el comando `git log`. La salida de `git log` lista las confirmaciones de la más reciente a la más antigua, así:  Por ejemplo, para revertir la confirmación que implementa la función restar, utilizaríamos el comando Utilizando `git revert` podemos deshacer los cambios de una confirmación concreta sin afectar al historial de confirmaciones. Ten en cuenta que `git revert` no es mágico, y dependiendo del historial de confirmaciones, puede dar lugar a un conflicto que haya que resolver manualmente. Ventajas de `git revert` Sobre los cambios manuales ¿Por qué es útil `git revert` si podemos necesitar resolver un conflicto manualmente? ¿No sería más fácil deshacer manualmente los cambios? Veamos sus ventajas: Preserva el historial: `git revert` crea una nueva confirmación que deshace los cambios de una confirmación especificada preservando todo el historial de confirmaciones. Esto ayuda a mantener un historial transparente de cambios y anulaciones. Inversión atómica: Garantiza que las inversiones sean atómicas y coherentes. Cuando borramos y confirmamos cambios manualmente, existe el riesgo de que se produzcan errores humanos. Conciencia de conflicto: Garantiza que se nos avise mediante conflictos si hay alguna integración o cambio que dependa de la confirmación original. Esto puede parecer incómodo, pero evita efectos secundarios no deseados. Metadata: La nueva confirmación creada por git revert incluye metadatos y un mensaje de confirmación que describe contextualmente lo que se ha revertido, ayudando a comprenderlo en el futuro. Sin `git revert`, este contexto podría perderse. Revertir una Fusión en Diferentes Escenarios En esta sección aprenderemos a deshacer una fusión. Por poner un ejemplo, supondremos que estamos fusionando una rama llamada `feature` en la rama `main` ejecutando el comando desde la rama `main`: Lo que aprendamos aquí puede aplicarse a dos ramas cualesquiera sustituyendo los nombres adecuadamente. Revertir una fusión que no tiene confirmación asociada El comando `git merge` no siempre crea una nueva confirmación. Sólo se crea una confirmación si la rama `main` ha divergido de la rama `feature`. Como `git revert` requiere un commit para operar una, no podemos utilizarla en este caso. Las ramas `main` y `feature` divergen cuando se crean nuevos commits en `main` que no son ancestros de la rama `feature`. En otras palabras, se crearon nuevos commits en `main` después de que se creara `feature`. Si las ramas no han divergido, cuando ejecutemos el comando `git merge feature` en la rama principal, Git utilizará el avance rápido para fusionar. Esto significa que desplaza el `HEAD` de la rama `main` al `HEAD` de la rama `feature`.  Podemos observar que esto ha ocurrido mirando el resultado de `git merge`:  Para deshacer dicha fusión, sólo tenemos que mover la `HEAD` de la rama `main` de vuelta a donde estaba. Para ello, nosotros: Identifica el `HEAD` anterior utilizando el `git reflog` Restablece el `HEAD` al anterior utilizando `git reset --hard`, sustituyendo por el anterior `HEAD`. La salida de `git reflog` tendrá este aspecto:  Podemos identificar la anterior `HEAD` fijándonos en la línea que dice "checkout: moving from feature to main" (escribe `feature` y `main` porque esos son los nombres de nuestras ramas). En este caso, la cabeza anterior es `fe59838`. Para mover el `HEAD` de la rama principal de nuevo a ella y deshacer la fusión, utilizamos entonces el comando  Revertir una fusión que tiene una confirmación asociada Si la rama `main` y la rama `feature` han divergido, cuando fusionamos dos ramas, se crea un nuevo commit, llamado commit de fusión.  La confirmación de fusión aplica los cambios de una rama a otra. En este caso, los cambios en `feature` se aplican a la rama `main`. Para revertir los cambios en la rama `main`, utilizamos `git revert` en la confirmación de fusión. Esto creará una nueva confirmación que deshará los cambios introducidos en la rama `main` con la fusión, restaurando efectivamente el estado de la rama principal al que tenía antes de la fusión. En primer lugar, tenemos que identificar el hash de la confirmación de fusión. Podemos hacerlo utilizando el comando `git log`:  Como la confirmación de fusión tiene dos padres, la sintaxis de `git revert` es ligeramente diferente. Necesitamos utilizar la opción `-m 1` para especificar que queremos revertir los cambios relativos a la rama `main`:  Resolución de conflictos al revertir un commit A veces pueden surgir conflictos al revertir una confirmación, sobre todo si la confirmación que se está revirtiendo entra en conflicto con cambios posteriores en el código base. En tales casos: Git pausará la reversión: Tenemos que resolver manualmente los conflictos. Git marcará los archivos conflictivos y requerirá intervención. Resuelve los conflictos: Abrimos cada archivo conflictivo, resolvemos los conflictos marcados por Git y guardamos los cambios. Pon en escena los archivos resueltos: `git add` Continúa la reversión: `git revert --continue` Conclusión Utilizar `git revert` para deshacer confirmaciones de fusión garantiza que cada cambio y corrección quede documentado en el historial de confirmaciones. Además, comprender los escenarios apropiados para aplicar `git reset` frente a `git revert` nos permite tomar mejores decisiones, especialmente cuando consideramos flujos de trabajo colaborativos o cambios sólo locales. Puedes leer más sobre este tema en la sección de preguntas más frecuentes. Si quieres aprender más sobre Git, te recomiendo estos recursos: [Curso Aprende Git](https://www.datacamp.com/es/courses/introduction-to-git) [Git Squash Commits: Una guía con ejemplos](https://www.datacamp.com/es/tutorial/git-squash-commits) [Git Prune: Qué es la poda Git y cómo usarla](https://www.datacamp.com/es/tutorial/git-prune) [Cambiar de rama Git: Una guía con ejemplos prácticos](https://www.datacamp.com/es/tutorial/git-switch-branch) [Fuerza de tracción Git: Cómo sobrescribir una rama local con una remota](https://www.datacamp.com/es/tutorial/git-pull-force) |
| Shard | 136 (laksa) |
| Root Hash | 7979813049800185936 |
| Unparsed URL | com,datacamp!www,/es/tutorial/git-revert-merge s443 |