2.8 Git

¿Qué es Git?

Git es un sistema de control de versiones, es decir es un sistema que te permite controlar los cambios que haces a tu código, te facilita saber que cambios se hicieron al código, quien realizó el cambio. Se suele tener una copia del código (rama o branch) por cada versión que tienes de tu sistema, así puedes agregar correcciones a tu sistema, mientras continuas trabajando en las nuevas funciones.

Git trabaja de forma local, por lo cual puedes tener versiones de tu código de forma local, las cuales después puedes sincronizar con algún repositorio remoto como Github, BitBucket o Azure Devops.

¿Qué son las ramas en Git?

Por lo general se tiene el código dividido en ramas para que todos los programadores cuenten con el código del proyecto y poder controlar los cambios que cada persona realiza, y poder regresar a una versión anterior o que sea más fácil de revisar que es lo que cambio el código entre una versión y otra del sistema.

Por lo general una forma de trabajar en equipos grandes de desarrollo es mediante ramas (Branches), que te permite crear copias de tu código para tener por ejemplo el código tal cual como esta en producción el sistema (master), y otra copia (rama) que se suele llamar develop (desarrollo) donde se tienen los cambios que los programadores están realizando, también se suele tener una rama con cada versión liberada. Así si vendes tu producto y cobras por versiones del mismo y ocurre un error en alguna versión puedes solo corregir ese error sin pasar todos los cambios de tus nuevas versiones.

También se cuenta con una rama desarrollo, donde cada programador descarga una copia de la rama de desarrollo hace sus cambios y luego crea un pull request que es una petición para informar a los demás programadores o a tu jefe, con los archivos que se cambiaron. Por lo general otro programador o líder revisa los cambios y los aprueba (Approve) o te sugiere mejoras a tu código antes de agregar tus cambios a la rama de desarrollo.

Se tienen varios comandos para comparar el código entre las 2 ramas y actualizar el código de una rama a otra.

Si 2 personas realizan un cambio sobre el mismo archivo git te detecta el cambio y te pide que hagas un Merge que básicamente debes elegir si los 2 programadores cambiaron el mismo archivo cual código es el que se debería quedar.

Pull request

Una vez que terminas tus cambios el siguiente paso es crear un Pull Request el cual contiene los cambios de tu código.

Mejores prácticas para tus Pull Request

Algunas de las mejores prácticas para que tus Pull Request sean mas fáciles de revisar

  • Que sean cambios pequeños, por ejemplo menos de 200 líneas de código.

  • Revisa los PR lo más rápido posible para que la persona que realizo el PR no tenga que cambiarse a otra actividad y luego regresar si es que se sugieren cambios.

  • Puedes mandar recordatorios si tu PR por ejemplo lleva 2 días sin revisión

  • Incluir el resultado de los test o del build en el PR,

  • Configura tu IDE para aplicar un autoformato del código para que todos sigan la misma estructura del formato.

  • Escribir una buena descripción del PR, puedes utilizar templates para facilitar la descripción y checklists

Puedes consultar un artículo mas completo aquí: https://refactoring.fm/p/code-reviews?utm_source=substack&utm_campaign=post_embed&utm_medium=email&s=r

Comandos git

Git cuenta con varios comandos para crear y ver las ramas y subir tus cambios.Algunos de los mas utilizados son los siguientes:

git clone <url>

Permite copiar el código de un repositorio url: dirección del repositorio que deseas clonar.

git branch

Permite ver la lista de ramas. La rama con * es la rama actual.

git branch <nombre>

Permite crear una nueva rama a partir de la rama actual.

git checkout <nombre>

Permite cambiarte a la rama, solo debes indicar el nombre de la rama a la cual quieres cambiarte.

git add .

Agrega todos los archivos que han sido cambiados, para luego confirmar los cambios con git commit.

git add <archivo>

Agrega el archivo que le pases como parámetros

git commit -m "mensaje"

Agrega todos los archivos con un mensaje, por lo general el mensaje es una descripción del cambio que se realiza

git push origin <nombre>

Agrega tus cambios a la rama con el nombre pasado como parámetro en el servidor remoto.

git fetch origin

Descarga la lista de cambios que tiene el servidor remoto que aún no están en tu repositorio local

git pull origin <nombre>

Descarga los cambios del repositorio remoto a tu repositorio local

Software para Git

Para poder utilizar Git en Windows puedes descargar e instalar Git for Windows https://gitforwindows.org

Si deseas que tu código este público en internet, una buena alternativa es GitHub el cual es gratuito para repositorios públicos y privados ilimitados.

Si trabajas en equipo puedes configurar el proyecto para que esté integrado con Azure Dev Ops:

  • Te facilita llevar el control de código de fuente para un máximo de 5 programadores de forma privada (solo tú y los 4 programadores tienen acceso al código fuente)

  • Te ayuda a llevar una metodología Agile, Scrum o CMMI, incluye Kanboards para llevar un control de las tareas que tienes pendientes

  • Compila tu código y corre las pruebas unitarias

  • Publica los servicios REST por ejemplo en Azure de forma automática.

Esta bastante integrado con Visual Studio Community

También puedes definir una estructura para los mensajes que se van a agregar en cada commit, por ejemplo puedes seguir los convetional commit. https://www.conventionalcommits.org/en/v1.0.0/#summary

También puedes seguir estas recomendaciones https://github.blog/2022-06-30-write-better-commits-build-better-projects/ https://refactoring.fm/p/code-reviews

Last updated