Mientras trabajamos con Git en ciertas situaciones, queremos deshacer los cambios en el área de trabajo o el área de índice, a veces eliminamos las confirmaciones de forma local o remota y necesitamos revertir esos cambios. Hay 3 formas diferentes en las que podemos deshacer los cambios en nuestro repositorio, estas son git reset , git checkout y git revert . git checkout y git reset, de hecho, se pueden usar para manipular confirmaciones o archivos individuales. Estos comandos pueden ser confusos, por lo que es importante descubrir la diferencia entre ellos y saber qué comando se debe usar en un momento determinado.
Hagamos un repositorio git de muestra con un archivo demo.txt y “ Hello Geeks ” escrito dentro.
Podemos ver que tenemos una sola confirmación realizada y el documento de texto que se ha confirmado con Hello Geeks en él. Ahora agreguemos más texto a nuestro documento de texto. Agreguemos otra línea Hello World. Al hacer este cambio, nuestro archivo ahora debe agregarse al área de preparación para realizar la confirmación. Estas actualizaciones se encuentran actualmente en el área de trabajo y para verlas veremos las que usan estado de git .
Ahora tenemos un cambio Hello World que no está rastreado en nuestro repositorio de trabajo y debemos descartar este cambio. Entonces, el comando que deberíamos usar aquí es:
1. git pago
git checkout se usa para descartar los cambios en el repositorio de trabajo.
git checkout <nombre de archivo>
Cuando escribimos el comando git checkout y vemos el estado de nuestro repositorio git y también el documento de texto, podemos ver que nuestros cambios se descartan del directorio de trabajo y volvemos al documento de prueba que teníamos antes. Ahora, ¿qué sucede si queremos desorganizar un archivo? Preparamos nuestros archivos antes de confirmarlos y, en cierto punto, es posible que queramos deshacer un archivo. Agreguemos Hello World nuevamente a nuestro documento de texto y organícelos usando el comando git add .
Queremos deshacer un archivo y el comando que usaríamos para deshacer nuestro archivo es:
2 . reiniciar
git reset se usa cuando queremos eliminar un archivo y devolver nuestros cambios al directorio de trabajo. git reset también se puede usar para eliminar confirmaciones del repositorio local.
git reset HEAD <nombre de archivo>
Cada vez que deshacemos un archivo, todos los cambios se mantienen en el área de trabajo.
Volvemos al directorio de trabajo, donde nuestros cambios están presentes pero el archivo ahora no está preparado. Ahora también hay algunas confirmaciones que no queremos comprometer y queremos eliminarlas de nuestro repositorio local. Para ver cómo eliminar la confirmación de nuestro repositorio local, organicemos y confirmemos los cambios que acabamos de hacer y luego eliminemos esa confirmación.
Tenemos 2 compromisos ahora, siendo el último el compromiso Agregado de Hello World que vamos a eliminar. El comando que estaríamos usando ahora es:
git restablecer CABEZA ~ 1
Puntos a tener en cuenta –
- HEAD~1 aquí significa que vamos a eliminar la confirmación más alta o la última confirmación que hayamos hecho.
- No podemos eliminar una confirmación específica con la ayuda de git reset, por ejemplo: no podemos decir que queremos eliminar la segunda confirmación o la tercera confirmación, solo podemos eliminar la última confirmación o las últimas 2 confirmaciones… las últimas N confirmaciones.(HEAD~ n) [n aquí significa n confirmaciones recientes que deben eliminarse].
Después de usar el comando anterior, podemos ver que nuestra confirmación se está eliminando y también nuestro archivo no está preparado y vuelve al directorio de trabajo. Hay diferentes formas en las que git reset puede mantener tus cambios.
- git reset –soft HEAD~1 : este comando eliminará la confirmación pero no eliminará un archivo. Nuestros cambios aún estarían en el área de preparación.
- git reset –mixed HEAD~1 o git reset HEAD~1: este es el comando predeterminado que hemos usado en el ejemplo anterior, que elimina la confirmación y elimina el archivo y nuestros cambios se almacenan en el directorio de trabajo.
- git reset –hard HEAD~1: este comando elimina la confirmación y los cambios de su directorio de trabajo. Este comando también se puede llamar comando destructivo ya que no podríamos recuperar los cambios, así que tenga cuidado al usar este comando.
Puntos a tener en cuenta al usar el comando git reset –
- Si nuestras confirmaciones no se publican en el repositorio remoto, entonces podemos usar git reset.
- Use git reset solo para eliminar confirmaciones que están presentes en nuestro directorio local y no en el directorio remoto.
- No podemos eliminar una confirmación específica con la ayuda de git reset, por ejemplo: no podemos decir que queremos eliminar la segunda confirmación o la tercera confirmación, solo podemos eliminar la última confirmación o las últimas 2 confirmaciones… las últimas N confirmaciones.(HEAD~ n) [n aquí significa n confirmaciones recientes que deben eliminarse].
Acabamos de discutir anteriormente que el comando git reset no se puede usar para eliminar confirmaciones del repositorio remoto, entonces, ¿cómo eliminamos las confirmaciones no deseadas del repositorio remoto? El comando que usamos aquí es:
3. git revertir
git revert se usa para eliminar las confirmaciones del repositorio remoto. Dado que ahora nuestros cambios están en el directorio de trabajo, agreguemos esos cambios al área de preparación y confirmémoslos.
Ahora empujemos nuestros cambios al repositorio remoto. Puede ver aquí cómo enviar sus cambios desde el repositorio local al repositorio remoto.
Ahora queremos eliminar la confirmación que acabamos de agregar al repositorio remoto. Podríamos haber usado el comando git reset, pero eso habría eliminado la confirmación solo del repositorio local y no del repositorio remoto. Si hacemos esto, obtendríamos un conflicto de que la confirmación remota no está presente localmente. Entonces, no usamos git reset aquí. Lo mejor que podemos usar aquí es git revert.
git revert <id de confirmación de la confirmación que debe eliminarse>
Puntos a tener en cuenta –
- Usando git revert podemos deshacer cualquier confirmación, no como git reset donde podríamos simplemente eliminar «n» confirmaciones recientes.
Ahora primero entendamos qué hace git revert, git revert elimina la confirmación que hemos hecho pero agrega una confirmación más que nos dice que la reversión se ha realizado. Veamos el ejemplo –
Nota : si ve las líneas como las que obtuvimos después del comando git revert, simplemente visite su editor de texto predeterminado para git y confirme el mensaje desde allí, o podría llevarlo directamente a su editor predeterminado. Queremos un mensaje aquí porque cuando se usa git revert, no elimina la confirmación, sino que crea una nueva confirmación que contiene los cambios eliminados de la confirmación.
Podemos ver que se está agregando el nuevo compromiso. Sin embargo, dado que esta confirmación está en el repositorio local, debemos hacer git push para que nuestro repositorio remoto también se dé cuenta de que se ha realizado el cambio.
Y como podemos ver, tenemos una nueva confirmación en nuestro repositorio remoto y Hello World , que agregamos en nuestra segunda confirmación, se está eliminando tanto del repositorio local como del remoto. Resumamos los puntos que vimos arriba:
Tabla de diferencias
pago git |
reiniciar |
git revertir |
---|---|---|
Descarta los cambios en el repositorio de trabajo. | Elimina un archivo y trae nuestros cambios al directorio de trabajo. | Elimina las confirmaciones del repositorio remoto. |
Se utiliza en el repositorio local. | Se utiliza en el repositorio local. | Se utiliza en el repositorio remoto. |
No realiza ningún cambio en el historial de confirmaciones. | Altera el historial de confirmaciones existente, | Agrega una nueva confirmación al historial de confirmación existente. |
Mueve el puntero HEAD a una confirmación específica. | Descarta los cambios no confirmados. | Revierte los cambios que hemos cometido. |
Se puede usar para manipular confirmaciones o archivos. | Se puede usar para manipular confirmaciones o archivos. | No manipula tus confirmaciones o archivos. |
Publicación traducida automáticamente
Artículo escrito por atharvapaliwal7 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA