¿Quieres saber cómo funciona el Git? Reiniciar
la opción funciona?
En una serie de cursos de Git en Envato Tuts +, repasé algunos de los conceptos fundamentales de Git en videos simples.
En este video de la serie, aprenderás todo sobre el reinicio de Git. Verá cómo usar cada tipo de reinicio y cómo estas variedades interactúan con los tres árboles Git:
También te mostraré cómo usar reinicio de git
en archivos individuales.
Restablecer Git. ¿Qué hace? Es cómo deshacer algunos cambios que son locales a su computadora. Cuando haya realizado algún trabajo que necesite rebobinar, reiniciar es su amigo. Puedes empezar de nuevo. Puede saltar de un lado a otro entre los contenidos de varias confirmaciones y hacer un poco de tiempo de viaje..
Tienes algunas opciones a tu disposición con git reset. Puede ir duro, suave y mixto, y también puede operar y mantener objetos de confirmación o hacerlo a nivel de archivo individual.
Cada una de estas tres variaciones afecta a árboles específicos que Git utiliza para manejar sus archivos y sus contenidos..
Hablando de forma metafórica, cada opción de restablecimiento cambia un árbol diferente, una parte diferente de cómo git guarda las instantáneas.
Árboles, ¿de qué estamos hablando aquí? Git usa el directorio de trabajo, el índice (también conocido como área de preparación) y algo llamado HEAD para crear y recuperar confirmaciones..
El directorio de trabajo le permite cambiar los archivos que puede incluir en el índice. Esta área de preparación le permite ajustar y seleccionar lo que desea poner en su próxima confirmación. Un objeto de confirmación es una versión cifrada criptográficamente de su contenido. Tiene algunos metadatos agregados y apunta a confirmaciones previas que nos permiten hacer nuestros bits de viaje en el tiempo.
HEAD es una referencia que apunta a tales objetos de confirmación. Es simplemente un puntero que se actualiza con cada nueva confirmación o cambio de rama. Puede moverlo y apuntar a cualquier punto en el tiempo con el objeto de confirmación..
Para obtener más información sobre los árboles y demás, mira mi video sobre los tres árboles y Git. Cubre el flujo de trabajo básico en Git y es una base sólida para comprender mejor la lógica de usar git reset.
Ahora veamos las diferentes opciones..
Esto va todo el nueve metros. Primero moverá HEAD y actualizará el índice con el contenido de la confirmación que HEAD ahora apunta. Luego actualizará el directorio de trabajo con el contenido del índice, por lo que posiblemente destruirá el contenido que haya cambiado en el directorio de trabajo..
Por lo tanto, es la única versión de git reset que es un poco peligrosa si no sabes lo que estás haciendo.
Esto moverá HEAD y también actualizará el índice con el contenido del compromiso deseado que HEAD no está apuntando. El directorio de trabajo no se ve afectado por esa operación..
La opción mixta es la opción predeterminada si no proporciona git reset con una opción. Siempre es seguro el directorio de trabajo, por lo que no hay que tener miedo de perder su trabajo.
Esta opción solo moverá HEAD y se detendrá justo allí. En efecto, esto deshará el último comando de git commit..
El directorio de trabajo y los archivos que pueden estar almacenados todavía no se ven afectados por esa operación.
Con todas estas opciones para git reset, específicamente le dices a git dónde detener la reproducción, rebobinando el contenido y los archivos de los compromisos anteriores para especificar los árboles a los que quieres afectar. Podemos llevar esto un paso más allá y restablecer el programa con una ruta de archivo..
Si usas un camino, Git no moverá HEAD. ¿Por qué? Debido a que HEAD apunta a un objeto de confirmación, y no puede apuntar solo a un subconjunto de eso. En otras palabras, HEAD no apunta a archivos específicos sino a objetos comprometidos, que consisten en archivos de bloque y algunos metadatos. El índice y el directorio de trabajo, por otro lado, pueden direccionarse en segmentos de clases.
Solo el índice y el directorio de trabajo desempeñan un papel cuando se utiliza una ruta. Simplemente copia el contenido de un archivo en el índice y no puede hacer mucho más.. git resetear un archivo.ext
asume que por defecto te refieres git reset --mezclado HEAD some-file.ext
y no afectará el directorio de trabajo.
Por cierto, debido a que HEAD no se puede mover, la opción suave no tendría sentido. Digamos que ha estado trabajando en la versión 3 de un archivo y lo agregó al índice para su próximo comentario. Ahora quieres desestabilizar estos cambios. correr git resetear un archivo.ext
para poner en escena ese archivo en particular.
Como resultado, el índice se rellenará con el estado de su archivo a partir de la versión 2, la versión de su última confirmación a la que está haciendo referencia HEAD. Los cambios que realizó en su archivo, versión 3, básicamente, todavía están disponibles en el directorio de trabajo. Aún puedes obtener estos cambios en la versión 3 de este archivo..
Entonces, ¿qué haces en efecto con git resetear un archivo.ext
es que solo manipulas el índice.
Qué pasa git reset - hard some-file.ext
? ¿Por qué no podemos usar eso también??
Esta funcionalidad se logra mediante git checkout
con un nombre de archivo. git checkout some-file.ext
es en realidad lo que git reset - hard some-file.ext
Lo haría, pero Git no nos deja usar la opción difícil..
Vamos a dar un paso más. Podemos dirigirnos a cualquier confirmación para restablecer un archivo específico, no solo el más reciente representado por HEAD. Esto restablece los archivos de destino en el índice al estado de un determinado compromiso, de nuevo sin afectar el directorio de trabajo o cualquier compromiso.
Una vez que haya restablecido el índice al estado de un determinado compromiso, puede usar una actualización al revés, puede usar git checkout
con un nombre de archivo para ver el contenido del índice en su directorio de trabajo.
¿Por qué usar el checkout? Porque git reset - hard
Con un archivo no es algo que Git te permita hacer..
Pero ten cuidado. Utilizando git checkout
con una ruta de acceso al archivo eliminará sus cambios más recientes en su directorio de trabajo y lo reemplazará con la versión del archivo en ese compromiso específico.
Si has encontrado esto útil, ¿por qué no echa un vistazo a algunos más cursos de Git??
Puede ver nuestra Introducción a Git y GitHub o probar los otros cursos de Coffee Break de esta serie: