Actualizado: 31-Ene-2024
Autor: Emmanuel Josué
Comprendiendo las áreas o estados de git
Para poder utilizar los comandos de git y entenderlos es importante
entender los estados que pueden tener los archivos o dicho de otra
forma las áreas en donde puede estar cada archivo, yo entendí esto
creando unos gráficos, espero te sirvan junto con la explicación.
Para empezar debemos entender los siguientes comandos básicos
Git init : Inicializa un repositorio de git el cual nos permitirá empezar a
utilizar todos los comandos de git, puedes utilizarlo en una carpeta
en donde ya existen archivos o en una carpeta en donde empezaras a
crear archivos para tu proyecto.
Ejemplo:
Nos encontramos en una
carpeta llamada "git" la cual no tiene archivos
Creamos un archivo en la carpeta para ejemplos del comando git status
-
Git status : Este comando nos indica en qué estado esta nuestro archivo o dicho de otra forma en qué
área se encuentra, los tipos de áreas las veremos a continuación. Este comando nos puede mostrar
tres estados o áreas las cuales enlistamos a continuación:
1. Sin seguimiento o no rastreado (untracked) - 2. Modificado (veremos un ejemplo más adelante)
-
3. Agregado al área de preparación
Ya que entendimos estos comandos pasemos al tema principal, cuando utilizamos el comando git init git creara tres áreas, llamadas "Directorio de trabajo" (working directory), "Área de preparación" (Staging area) y "Repositorio" (repository), en las cuales gestionara los archivos o los estados de estos, visualmente las áreas las podrías imaginar de la siguiente forma
Directorio de trabajo (working directory)
Explicaremos cada área empezando por la de Directorio de trabajo, esta área es en donde se reflejaran los cambios que le hagas a los archivos y los archivos nuevos que crees, si creas un archivo nuevo git lo identificara como un archivo no rastreado esto quiere decir que git no tiene conocimiento de este, no tiene ningún registro de dicho archivo, al principio todos serán así para git, lo podemos verificar utilizando el comando git status, la salida de este comando será algo así:
Graficamente lo podemos imaginar así
Una vez este archivo pase por las dos áreas restantes, área de preparación y repositorio, las cuales explicaré más adelante, los cambios que realicemos a los archivos que existan en el repositorio se reflejarán es esta área, utilizando el comandogit status podemos ver como se visualizaran los archivos que existen en el repositorio y son modificados, este es el estado de modificación que te mencione al principio
Quiero que observes que ahora la palabra no es untracked sino ahora es changes y ahora también aparece la palabra modified, esto nos indica que git ha detectado los cambios realizados. Siempre que realicemos cambios en un archivo, primero aparecerán en esta área y una vez que queramos guardar los cambios realizados en un commit, debemos colocar previamente los archivos con los cambios que queremos guardar en el área de preparación de la cual hablaremos a continuación
Área de preparación (Staging area)
Es una área en donde colocaremos los archivos con los cambios que queremos en el siguiente commit, creo
que lo puedo explicar de otra forma para mostrar para qué sirve esta área, digamos que tienes 10
archivos y en todos realizaste cambios, ahora quieres guardar cambios y que queden registrados en un
commit, pero solo quieres guardar los cambios de 4 archivos y no de los 10 porque en los 6 restantes los
cambios que has realizado aún no están completos, para separar los cuatro archivos modificados del resto
y solo guardar estos 4 archivos en el commit, los debemos agregar en el área de preparación, esta área es
como un filtro para colocar solo los archivos con cambios que quieres guardar en el commit mientras que
el resto, los 6 archivos, permanecerán en el área de directorio de trabajo o si por el contrario quieres
guardar los cambios realizados en los 10 archivos, de igual forma debes colocarlos en el área de
preparación stagin área
¿Cómo pasamos los archivos del área de Directorio de trabajo al área de preparación ?
Utilizamos el comando git add . este comando se utiliza para mover los archivos con cambios o los
archivos nuevos al área de preparación, existen muchas formas de utilizar este comando, pero por el
momento veremos solo dos formas;
-
1. git add nombre_del_archivo: Colocara en el área de preparación el archivo que le indiques -
2. git add . : Colocara en el área de preparación todos los archivos con cambios y archivos nuevos en el área de preparación
Pero antes de ejecutar esto vamos a editar, con ayuda de vim, el archivo "muebles.txt" y colocar un
texto, puedes colocar el que quieras, yo para este ejemplo coloque la palabra "ropero"
Luego de guardar el texto vamos a utilizar el comando "git status" para ver que el archivo sigue sin ser rastreado
Ahora ejecutaremos el comando git add muebles.txt
Y un git status para ver lo que ha pasado
Podemos ver que ahora el nombre del archivo está en verde y que nos sale un mensaje que dice "cambios para el commit", nuestro archvio ahora está en el área de preparación, visualmente lo podríamos ver así
Una vez pasamos los archivos con cambios al área de preparación el siguiente paso es realizar nuestro primer commit y con esto pasar nuestros cambios al área del repositorio .
Repositorio (repository)
El área de repositorio o el repositorio es donde existirán nuestros commit que son como fotografías de nuestro proyectos que tienen los cambios que han sufrido a lo largo del desarrollo del proyecto. Tratare de expresar esto con los siguientes gráficos y continuando con el archivo que tenemos el cual ha llegado al area de preparación
Y tiene en su interior la palabra "ropero" que trataremos de representar visualmente así
Ahora para llevarla al área de repositorio necesitamos aplicar un commit esto lo hacemos con el
siguiente comando
git commit -m "Primer commit"
Al ejecutar el comando se han guardado todos los cambios en este commit, podemos pensar que se ha tomado una foto del proyecto con los cambios realizados algo así… bueno antes veremos que el archivo esta en el area del repositorio
Veámoslo más de cerca
Ahora imaginemos visualmente lo que hay en su interior
En este punto podemos imaginar que el commit se ve algo así
Ahora viene una parte muy importante a entender ya que una vez echo cada commit ahora los cambios que realicemos en los archivos ya existentes tendrán o lucirán como en el ultimo commit que hemos realizado, en nuestro ejemplo el ultimo commit es el commit 1 llamado "Primer commit" si realizamos un cambio al archivo muebles.txt lo que pasara es que el cambio se vera reflejado en el directorio de trabajo, digamos que editamos el archivo y le agregamos la palabra sillón, git detectara esto y reflejara dichos cambios en el directorio de trabajo. Agregamos la palabra al archivo
y aplicamos el comando git status
Visualmente podemos imaginarlo algo así
Digamos que las modificaciones se agregaran a una versión del archivo existente en el último commit, en nuestra representación gráfica podemos ver que nuestra fotografía o primer commit no se verá afectado por las modificaciones sino que quedara guardado por si en algún momento queremos regresar a esa versión del proyecto si es que los cambios que realizamos no son satisfactorios o simplemente queremos ir a ese commit a ver cómo era algo en ese momento del proyecto. Continuando con nuestro ejemplo el archivo con las modificaciones deberá pasar por el mismo proceso anterior, lo colocaremos en el área de preparación con ayuda del comando git add nombre_del_archivo
Una vez aplicado el comando git add podemos ver que nuestro archivo ha pasado al área de preparación
luego en un commit aplicando el comando git commit -m "mensaje descriptivo sobre el cambio" para que de esta forma se guarden los nuevos cambios, podemos imaginarlo de esta forma al final del segundo commit
El commit 2 es el ultimo commit realizado, es decir que este es el commit más reciente, el repositorio y
sus commit (fotografías de los estados que ha tenido el proyecto) nos sirven para poder guardar y ver,
si lo requerimos, una versión o estado de nuestro proyecto y permitirnos regresar a un punto si es que
así lo deseamos
- Platzi - Git
- Pro Git Book