¿Por que usar GIT? Te explico mis motivos

Voy a escribir este post no solo explicándote que es git, te voy a dar unas serie de razones por las que a mí me ha sido de mucha utilidad. Gracias a este método de trabajo te puedes ahorrar muchos dolores de cabeza con los errores que siempre aparecen al hacer deploys (subir a produccion) y tener muy controlado tu proyecto en base al control de versiones git y el histórico de cambios.

Yo desde que aprendí a utilizar Git no he dejado de usarlo, de hecho justo después de dar los pasos para instalar Laravel en ubuntu Instalación Laravel framework (framework de php) lo primero que hago es subir el la raíz proyecto al git repository remoto (paso que realizo en todos mis proyectos) o bien subir el proyecto laravel a github.

¿Por que usar git?

Las principales razones por las que a mí me han sido útiles y por las que vale la pena dedicar al menos cierto tiempo o probarlo para decidir si te gusta son:

  • Desarrollo del trabajo ordenado (Mientras se desarrolla , se van guardando los cambios (git commit ) como si de una partida a un juego se tratara y cuando acabas lo subes a tu rama remota). Con estos pasos necesarios para guardar tus cambios, siempre te obligará a repasar tu código, dejar un comentario sobre tus cambios y actualizar tu git repository.
  • SEGURIDAD, y lo pongo en mayúsculas por una simple razón y que si no estás usando git vas a votar de alegría. Podrás, en caso de hacer un deploy y ver como todo se desploma como sucede en esta imagen, ejecutar un comando para ver la lista de cambios actuales y volver al último justo antes del deploy (puedes retrasar al punto que quieras), voliá, problema solucionado!.

Imagen de destrucción similar a un error cuando no usas Git

  • Muy de la mano de los otros dos puntos, junto con la lista de “git commit” y todos los pasos que tienes que ir dando para guardar tu proyecto.Tendrás el código y todas sus versiones bien definidas y controladas.
  • Rapidez brutal de puesta en producción y de creación de nuevos proyectos. Incluso puedes dejar una copia base y clonarla de nuevo cuantas veces quieras, únicamente te diriges al ordenador que vayas a usar, te situas en un directorio y con git instalado en el sistema y ejecutas “git clone http…” . En resumen, facilidad.
  • Mejora la coordinación de equipo y trabajo conjunto, sobretodo si además usas SCRUM o alguna técnica similar (Te recomiendo que eches un ojo a esta aplicación que me tocó implementar en mi trabajo y lleva todo integrado en una misma App web, cartas scrum, pruebas de integración continua, git y todo un apartado a comúnicación , sistema de comentarios y control de errores, envio de emails con resultados y más).

¿Que es GIT?

Git, es un software de control de versiones diseñado por Linus Torvalds. Y cuando nos referimos a control de versiones git básicamente resumiendo es un registro de todos los cambios que se han producido  por orden cronológico, dónde podemos volver atrás y poder descartar cambios o recuperar código en el caso de tener errores de código o mal funcionamiento.

Git permite trabajar en varias ramas. ¿Y esto que quiere decir?, es la grandeza de este sistema, de un mismo proyecto base, se pueden clonar varias copias , dónde por ejemplo diferentes equipos desarrollaran funcionalidades diferentes al mismo tiempo, luego una vez finalizado el trabajo se actualizarán a las respectivas ramas y se culminará con un “merge” (mezcla de desarrollos).

Normalmente la rama master “principal” se encuentra en la nube y se suelen realizar clones “copias” de esta rama para desarrollar en local y posteriormente se suben los cambios.

¿Cómo funciona git?

Aquí una imagen para ayudar a entender este concepto.

En este ejemplo vemos un proyecto con dos ramas, una,  la rama master que es la principal. La roja que es la desarrollo (clonada de master) y vemos como se han desarrollado dos funcionalidades nuevas, la feature naranja y la feature azul.

Imagen de esquema de funcionamiento workflow de git

Las dos ramas feature son copias de develop. Una vez concluido el desarrollo se mezclarán con la rama original de la que fueron clonadas. Finalmente se  realizan las pruebas pertinentes para asegurarse que develop es estable. Posteriormente se hace el “merge” (mezcla) de develop con master.

Estos pasos para el desarrollo de estas funcionalidades, permiten tener la rama master “principal” limpia mientras se trabaja en la develop. Siempre tendremos históricos de  “git commit” que podremos revertir, si nos interesa.

Algunas instrucciones básicas de GIT

Recomiendo pasar por la documentación oficial para complementar esta información y ver las posibilidades de la herramienta https://git-scm.com/docs.

Nos da el estado actual de nuestro proyecto, elementos eliminados o añadidos, cambios de código, absolutamente cualquier cosa que difiera con la versión de la cual hemos partido. Muy recomendable de usar antes de realizar cualquier acción.

Clona un proyecto utilizando la url del repositorio.

Añade al repositorio local los nuevos ficheros creados en el proyecto o eliminados.

El mismo que el anterior pero añadiendo el “.” añadimos de golpe todos lo cambios.

Guarda los cambios en nuestra rama local. Mantenemos el repositorio actualizado.

Elimina del repositorio (memoria de cambios) un fichero o directorio (No físicamente sino del histórico de cambios).

Subimos a nuestra rama remota los cambios que tenemos actuales en local (actualizando nuestro trabajo). Paso posterior a realizar los “git commit”

Mezclamos nuestra rama con otra

Actualizamos nuestro puntero local con los posibles cambios que hayan habido en la rama remota ( nuestros compañeros también trabajan).

Muy útil! Retroceder un “git commit” o un “git pull”. Nos muestra una lista de “git commit” junto con el parámetro – – date=iso nos muestra las fechas en las que se hicieron.

Retroceder el puntero de git a un git commit anterior. Junto con la instrucción anterior, podemos seleccionar el id de git commit al que queremos retroceder  y restaurar nuestro proyecto.

Nos permite dejar nuestro proyecto justo en el punto en el que estábamos antes de empezar a hacer cambios. Seguidamente permite hacer un pull (actualizar nuestro proyecto con cambios remotos). De esta manera no tendremos problemas para actualizar ficheros y seguimos manteniendo nuestros cambios guardados para cuando queramos.

Después del comando anterior y con la rama actualizada podemos añadir nuestros cambios encima de la actualización. Después de ejecutarlos tendríamos nuestra rama actualizada con los cambios remotos y también nuestros cambios actuales.

¿Un tutorial de git?

Te dejo aquí un tutorial de git donde verás de manera más extensa como crear modificar y gestionar tus repositorios git y poner a prueba los comandos git que te explicado en el punto anterior. Podrás poner en práctica  git add, git commit, git push, git checkout, git stash entre otros comandos.

Este tutorial me pareció útil. Se trata de un tutorial git que forma parte de una lista de vídeos dedicadas a la herramienta de control de versiones y me ha parecido interesante y muy útil. Sin extenderme más te dejo el tutorial y ya me cuentas que te ha parecido.

Usa GIT en tus proyectos

  • Instalación de WordPress manualmente. Puedes aprovechar GIT cuando vayas a instalar WordPress. En el link que te dejo explico cómo instalar WordPress manualmente y podrías aprovechar ese momento para crear un repositorio con la instalación.
  • Instalación de Laravel Framework. También puedes hacer lo mismo si vas a hacer una instalación de Laravel framework. De hecho te diré que en ninguno de mis proyectos falta GIT.

Donde alojar tus repositorios

Tienes cantidad de opciones, entre ellos git hub (el más usado, aunque últimamente hubo movimiento de plataformas después de que Microsoft lo adquiriera, una gran cantidad de usuarios migraron a bitbucket.org/ y otras plataformas como gitlab, leer más aquí) es gratuito, sencillo de utilizar y hay una gran comunidad detrás compartiendo código y trabajando conjuntamente.
https://github.com

Imagen del logo de github, aplicación web para repositorios git

Otra plataforma de git es bitbucket. Personalmente prefiero git hub, me parece mucho más intuitivo que bitbucket.org/ pero sigue siendo buena opción. También tienes opción de usar bitbucketcards a modo de sistema de cartas scrum.
https://bitbucket.org/
http://www.bitbucketcards.com

Imagen del logo de bitbucket, app para gestión de repositorios git
Gitlab es un software libre dónde incluye en una misma aplicación varias herramientas muy útiles. Entre ellas, lanzamiento de pruebas de integración continua , el propio funcionamiento Git y con los repositorios en tu servidor. Yo mismo he tenido la oportunidad de instalarlo en un proyecto y  ver  su potencial.
https://about.gitlab.com/

Imagen del logo de la aplicación gitlab para usar git

Clientes de git gui más usados

Te adelanto, que un cliente de Git facilita mucho tu desarrollo por lo que te explicaré a continuación. Te adaptas rápidamente y luego no sabrás trabajar sin él. Recomiendo que antes practiques con la consola, que te encuentres con las típicas complicaciones y aprendas a resolverlas. Esto te dará poder!.

Imagen de yoda y la fuerza al tener el control usando git
Te dejo un enlace que amí me pareció muy útil a la hora de elegir un cliente de git https://www.slant.co/topics/465/~best-git-clients-for-macos el enlace está en ingles pero siempre puedes usar google translate ;).

Seguramente no sabrás por cual decidirte, yo te recomiendo que pruebes el que más te llame la atención. Yo te recomendaría escoger  los que están en el top de la lista  (los mejores puntuados). Seguramente acabarás probando varios. Según vayas trabajando con ellos encontrarás el que te haga sentir más cómodo.

Igualmente te daré mi experiencia con algunos de estos clientes.
Source Tree el primer Git gui  que probé, funciona correctamente pero para mi es excesivamente lento, y puede resultar un poco complejo por las configuraciones que aporta, de todas maneras es buen cliente de git y estable. Gratis.

Imagen del cliente git source tree

El cliente Git fork destaca por su rapidez, es muy limpio y claro. Git fork no lo he usado tanto pero siempre  funcionó correctamente y es muy ágil.Gratis.

Otra fotografía de un cliente de git, fork
Git kraken es el cliente de Git gui que uso actualmente. Es muy sencillo de utilizar e intuitivo, este cliente lo recomendaría para alguien que acaba de empezar por su sencillez y también para usuarios avanzados. Gratis.

Imagen de gitkraken, cliente de git sencillo de utilizar y a mi parecer bonito
Después de darte mi experiencia con estos clientes de Git gui.  ¿con cual te has quedado?.

[/fusion_text][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]