¿Qué es Git?

Git branches diagram Según la definición de su sitio web:

Git es un sistema de control de versiones distribuido de código abierto y gratuito diseñado para manejar todo, desde proyectos pequeños a muy grandes, con velocidad y eficiencia.

Tal y como dice su sitio, Git es una herramienta que permite trabajar en equipo a los programadores de forma eficaz y eficiente, sin importar la magnitud del proyecto, ya que cada programador guarda una copia local del mismo y su historial de cambios. De esta forma, mejora enormemente la velocidad a la hora de confirmar cambios (commits), fusión de códigos (pull requests), volver cambios hacia atrás (revert, reset, checkout), etc.

Esta herramienta fue creada originalmente por el mismo creador de Linux (kernel del sistema operativo GNU/Linux y de Android) Linus Torvalds en 2005:

Imagen De Linus 2014

Conceptos clave para entender Git

A continuación se listan algunos conceptos clave que te ayudarán a entender mejor de qué trata Git:

Repositorio

Se le denomina así al lugar donde se almacena el código de nuestro proyecto y su correspondiente historial de versiones, en otras palabras, es como una carpeta "padre" que contiene todo.

Rama (Branch)

Una rama es una bifurcación de la rama principal (comunmente conocida como master) o de alguna otra creada en el repositorio. En un principio contaría con el mismo código que su predecesora, y solo luego de haber realizado modificaciones y confirmado los cambios (commit), la misma estará bifurcada y tendrá un código distinto.

Clon

El clon es una copia exacta del repositorio principal en un PC local, en el cual se trabajará.

Área de preparación (Staging Area)

El área de preparación es el paso anterior a confirmar los cambios, es decir, allí se agregan los archivos que se han modificado, previamente de ser confirmados.

Confirmar cambios (Commit)

La confirmación de cambios, o mejor dicho commits, es el procedimiento que realizamos los programadores para que nuestro código quede almacenado, ya que en ese momento Git creará una "foto" del estado actual del proyecto. En caso que nos demos cuenta que nuestro código fue confirmado erroneamente, podemos volver a una "foto" anterior (commit anterior) y recuperar lo que necesitamos.

Solicitud de incorporación (Pull Request)

Es la solicitud que se realiza para que se pueda proceder a fusionar dos ramas, por ejemplo se realizaron cambios en la rama de desarrollo, estos se testearon y confirmaron, para entonces, hacer el pull request hacia la rama principal (puede ser de producción o cualquier otra rama).

Fusión de Ramas (Merge)

El Merge es el nombre que se le da a la fusión de dos ramas en una. Por ejemplo el código de la rama de desarrollo se impacta en la rama master para que tengan el mismo código.

Git branches diagram

Ejemplo de flujo de trabajo con Git

A continuación una serie de pasos que suelo realizar a la hora de trabajar con Git en un nuevo proyecto (cada quien puede aplicar otras formas de trabajar y/o estándares):

  1. Se crea un repositorio en una plataforma de alojamiento en la nube de Git, la misma puede ser GitHub,GitLab, BitBucket o alguna otra que haya (a veces las empresas tienen su propio servidor).
  2. En el proyecto local se inicializa un repositorio Git.
  3. En el proyecto local se realiza el commit inicial del repositorio (rama master).
  4. Se añade el repositorio creado en la nube al repo local.
  5. Se envían los cambios del repositorio local al repositorio en la nube.
  6. En caso de añadir una nueva funcionalidad, se crea una nueva rama en el entorno local y se repiten los pasos del 3 al 5, pero esta vez trabajando en la nueva rama, de esta forma tendremos la nueva rama en la nube.
  7. Cuando hayamos testeado la nueva rama y estemos conformes para pasar el código a "producción", realizamos un pull request para impactar los cambios.

La serie de pasos anteriores muestra a grandes rasgos una forma de trabajar con Git en local y en sincronía con el proyecto en la nube. Una buena práctica es tener una rama para producción (puede ser master), otra para desarrollo y para nuevas funcionalidades se crean otras ramas, las cuales impactarán (merge) sus modificaciones en la rama de desarrollo, donde un equipo de testing pueda testear los cambios y realizar un nuevo pull request hacia la rama principal, de esta forma se garantiza que el código que llega a producción esté probado y con menos fallos.

Algunos comandos utilizados

A continuación se muestran algunos comandos que utilizo a la hora de trabajar, tener en cuenta que estos comandos se ejecutan todos en la PC local.

git init

Este comando inicia un repositorio en la carpeta donde sea ejecutado.

git add [archivo o directorio]

Añade al área de preparación (staging area) archivos o directorios del proyecto para luego ser confirmados.

git commit -m 'Mensaje del commit'

Este comando confirma los cambios, es decir, genera una "foto" del proyecto con el estado actual.

git remote add origin URL_REPOSITORIO

Este comando asocia el repositorio en la nube al repositorio creado localmente.

git push -u origin [NOMBRE_RAMA]

Este comando crea una rama en el repositorio remoto, la asocia a la rama actual que está en el local, y sube los cambios que se tienen actualmente (la foto) a dicha rama.

git pull origin [NOMBRE_RAMA]

Este comando trae cambios de una rama remota a la rama local donde estamos posicionados.

git pull

Trae cambios desde el repositorio remoto al repositorio local, impactando en la rama en la cual te encuentras.

git push

Sube los cambios de la rama local, a la rama remota asociada.

git checkout -b [NOMBRE_RAMA]

Crea una nueva rama a partir de la actual y cambia hacia ella.

git checkout [NOMBRE_RAMA]

Cambia a una rama existente en el proyecto.

Conclusiones y algunas consideraciones

En conclusión Git es una herramienta muy potente, muy fácil de entender y utilizar por los programadores, tan versátil que incluso puedes trabajar de forma offline en un proyecto compartido sin "romper" nada, dado que luego se puede integrar los cambios al proyecto remoto sin problemas.

En este artículo se trató de forma sencilla cómo funciona, y algunos de sus principales comandos, pero es una herramienta muy completa con muchas más funciones, que si quieres conocerlas te invito a leer el libro publicado en su página web, también te dejo el link de descarga por si no lo has encontrado.

Espero que te haya gustado el artículo, nos vemos para la próxima.


Published

Category

Tutoriales

Tags

Contact