Cargando



Manejo de cambios en los archivos con Git

En este tutorial veremos como Git maneja los cambios en los archivos, pasando por la clasificación de los archivos de acuerdo a su estado, los comandos más utilizados para estas acciones y algunos ejemplos para poner en práctica todo lo explicado.


nov 25 2014 01:23
Profesional
mar 29 2016 13:45

Git trabaja de una forma interesante para llevar un historial de los cambios en los archivos. Aunque pudiera parecer que busca los cambios en cada uno de estos lo que realmente hace es llevar un archivo llamado index, en el cual va insertando los cambios que van ocurriendo. De esta forma solo con leer el archivo index puede saber que archivos y que contenido dentro de los mismos ha sido cambiado.

 

Una vez que entendemos ese concepto de como Git lleva los cambios registrados, es cuando podemos empezar a sacar el verdadero provecho de la herramienta, ya que es en este momento cuando podremos empezar a utilizar los diferentes comandos para llevar los cambios de nuestro repositorio y manejarlos desde una perspectiva lógica.

 

Clasificación de archivos dentro de Git


Antes de continuar con puntos más profundos, debemos ver como Git clasifica sus archivos. Esto no significa una clasificación por tipo de archivo debido a su extensión, si no por el estado del mismo en relación a nuestro repositorio y su index.

 

Básicamente tenemos tres tipos de archivos en GIT, cada uno tiene su propio momento dentro del repositorio, veamos cuales son estos:

 

Tracked
Este tipo de archivo ya está añadido a nuestro repositorio y es tomado en cuenta por el index y un archivo toma este estado una vez que lo hemos añadido con el siguiente comando.
git add nombredelarchivo
Ignored
En esta clasificación un archivo ignored no es tomado en cuenta por Git al momento de llevar los cambios, normalmente se clasifica de esta manera a los archivos que sufren muchos cambios o que no son vitales para la estabilidad del proyecto, por ejemplo los archivos de imagen debido a su peso o tal vez scripts de Base de Datos que no tengamos que estar modificando siempre. Para ignorar a un archivo hay que incluir su nombre dentro de un archivo llamado .gitignore y añadirlo a nuestro repositorio.

 

Untracked
Este tipo de archivo aun no pertenece a nuestro repositorio porque aún no lo hemos añadido y es nuevo en el sistema de archivos, normalmente ocurre cuando creamos un nuevo archivo en un repositorio ya inicializado o cuando inicializamos un repositorio en una carpeta que tiene archivos existentes.

 

Ejemplo práctico de la clasificación de archivos


Veamos ahora un pequeño ejemplo práctico de cómo podemos detectar los tipos de archivo en un repositorio Git, para ello debemos seguir los siguientes pasos:

 

1- Vamos a crear una carpeta nueva en nuestro equipo que se llame archivosGit.

 

2- Una vez creada la carpeta vamos a ingresar dentro de ella desde nuestra consola y ahí vamos a ejecutar el comando git init y luego hacemos git status para ver el estado de nuestro repositorio, veamos como luce la aplicación de los comandos anteriores:

 

manejo-cambios-archivos-git.jpg

 

3- Cuando hayamos cumplido el paso anterior ya tendremos un repositorio Git inicializado y listo para trabajar, entonces podemos crear un nuevo archivo en esa carpeta y haremos nuevamente git status para ver el cambio, debemos tener nuestro nuevo archivo bajo la clasificación untracked.

 

4- Vamos a repetir el paso anterior y crearemos un nuevo archivo, si vemos el resultado de hacer nuevamente git status contaremos ambos archivos, veamos:

 

manejo-cambios-archivos-git2.jpg

 

5- Ahora vamos a crear un nuevo archivo llamado .gitignore, nótese el punto antes del archivo y dentro vamos a colocar el nombre de uno de nuestros archivos anteriores, hacemos nuevamente git status y veremos que ahora solo nos sale el archivo que no está en él .gitignore y el archivo .gitignore que acabamos de crear:

 

manejo-cambios-archivos-git3.jpg

 

6- Luego haremos un git add . para así añadir todos nuestros archivos y finalmente ejecutaremos un git commit -m”commit inicial” con ello añadiendo nuestros archivos al repositorio, si hacemos un cambio en el archivo que no colocamos dentro del .gitignore y lo salvamos, si ejecutamos nuevamente git status veremos a un archivo en estado o clasificación tracked.

 

manejo-cambios-archivos-git4.jpg

 

 

El comando git add


En el ejemplo anterior pudimos ver la utilización del git add y quizá podamos pensar que es un comando más de nuestra herramienta pero este es de suma importancia, es el que nos permite añadir un archivo a nuestro repositorio si aún no existe en él y también nos permite añadir los cambios que hayan sucedido en un archivo existente en nuestro repositorio.

 

¿Cómo utilizarlo?
Tiene algunas formas de ser utilizado, la más común es hacer git add nombredelarchivo, donde le decimos que archivo añadir o si no podemos hacer git add . donde el punto representa todos los archivos que hayan sido modificados o que no estén en el repositorio.

 

Es muy importante que luego de hacer cualquier cambio en el repositorio añadamos los archivos con git add, ya que de lo contrario no podremos salvar nuestros cambios, además de estar creando diferentes versiones del archivo lo que nos puede llevar a un posible conflicto a futuro.

 

Utilización del git add


Dentro de nuestra carpeta archivosGit que hemos creado en el ejemplo anterior del tutorial, vamos a añadir un nuevo archivo que le colocaremos nuevoArchivo3 y luego en el archivo existente que no está en él .gitignore vamos a hacer un cambio.

 

Lo que queremos lograr con esto es poner a prueba la forma de utilizar nuestro comando git add, veamos como luce esto en nuestra consola de comandos:

 

manejo-cambios-archivos-git5.jpg

 

Al haber seguido las instrucciones anteriores debemos haber llegado a tener en pantalla algo como lo anterior, donde se nos muestra un archivo modificado y un archivo totalmente nuevo en el repositorio.

 

Ahora vamos a añadir el nuevo archivo al repositorio, pero no lo haremos con el archivo ya existente ni el que hemos modificado anteriormente. Para ello solo debemos hacer git add nombredenuestroarchivo. Acto seguido haremos git status. Veamos:

 

manejo-cambios-archivos-git6.jpg

 

Como podemos notar ya nuestro repositorio toma en cuenta el archivo que hemos añadido con git add, esta es la manera en la que de forma básica podemos trabajar los cambios de nuestros archivos.

 

Eliminar archivos del repositorio


La siguiente acción que debemos saber realizar es eliminar los archivos de nuestro repositorio, ya que es muy común que hayamos creado algo por error o simplemente estemos poniendo en orden las cosas dentro del mismo.

 

Hay dos cosas a tomar en cuenta, podemos eliminar el archivo del index de nuestro repositorio pero mantener dicho archivo en el sistema de nuestra carpeta, por lo que si hacemos un git status lo volveremos a ver disponible. O si no podemos borrar el archivo tanto de nuestra carpeta como del index de nuestro repositorio, para ello podemos utilizar el comando git rm.

 

El comando git rm - -cached


Al utilizar el comando rm con la opción añadida de cached, lo que hacemos es borrar el archivo en cuestión del index, sin embargo lo mantendremos en nuestro equipo, este comando se utiliza mucho cuando no deseamos añadir aún dicho archivo a nuestro repositorio pero necesitamos salvar los otros cambios.

 

Para utilizarlo simplemente hacemos el comando cuando ya hayamos añadido con git add algún archivo, veamos como luce esto en nuestra consola de comandos:

 

manejo-cambios-archivos-git7.jpg

 

Notamos que el archivo nuevoArchivo3 que habíamos añadido a nuestro repositorio ahora no está y tiene la clasificación untracked.

 

El comando Git rm


Ahora veamos cómo utilizar el comando git rm, este comando es mucho más poderoso ya que elimina directamente al archivo del index y de la carpeta, es por ello que hay que ser cuidadosos en el momento en que decidamos utilizarlo en nuestro repositorio, es muy probable que una vez aplicado no podamos recuperar el cambio.

 

Veamos en el siguiente ejemplo como funciona cuando lo aplicamos sobre un archivo, en este caso vamos a volver a añadir nuevoArchivo3 con git add y luego aplicaremos sobre este git rm:

 

manejo-cambios-archivos-git8.jpg

 

Vemos que cuando lo hacemos directamente git nos muestra un error y nos pide que hagamos un borrado forzado al añadir el parámetro -f a la instrucción esto es debido a lo importante del cambio, finalmente haremos un git status y notaremos que dicho archivo desapareció de nuestro repositorio en su totalidad.

 

manejo-cambios-archivos-git9.jpg

 

Más del .gitignore


Pudimos ver que podemos añadir un archivo especifico a nuestro archivo .gitignore, sin embargo cuando trabajamos en un entorno en el que manejamos cientos o tal vez miles de archivos no sea muy práctico, es por ello que podemos utilizar patrones.

 

Un patrón nos va a permitir indicarle a Git que un archivo que cumpla la secuencia de caracteres o expresión debe ser ignorado, con ello podemos indicarle extensiones específicas, ya sea en todo el proyecto o dentro de una carpeta en especial. Veamos un ejemplo de esto.

 

*.jpg va a ignorar todos los archivos .jpg de nuestro proyecto, pero si queremos mantener la traza de uno en particular solo debemos añadir:

!nombrearchivo.jpg
Así de sencillo tenemos una estructura fuerte y compleja que nos permite mantener nuestro repositorio organizado.

 

Con esto finalizamos este tutorial, hemos visto de manera extensa la forma en la cual Git lleva o maneja los cambios en nuestros archivos, es importante dominar esta materia, ya que con ello podremos trabajar de forma más eficiente en entornos de equipo donde se maneje Git como controlador de versiones.


¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X