Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=0e5f8f3c-b9a1-4bbb-a422-b4941fdfa030

Qué es Git, ventajas e inconvenientes y por qué deberías aprenderlo (bien)

Si te dedicas a la programación hoy en día, debes dominar multitud de lenguajes y plataformas, herramientas, conceptos y patrones. Pero si vamos a lo esencial ¿qué herramientas dirías tú que son realmente indispensables? Si te dijeran que sólo te puedes quedar con 3 herramientas de todo lo que utilizas para programar ¿cuáles serían?

Cualquier programador profesional te diría seguramente estas tres:

  1. Un editor de código potente que te ayude a escribir código rápido, productivo y con menos errores.
  2. Un buen navegador Web para poder consultar documentación y solucionar errores con la comunidad.
  3. Un gestor de código fuente.

Sí, hay muchas otras, sin duda, pero estas 3 son esenciales. Sin ellas el trabajo sería casi imposible.

¿Qué es un gestor de código fuente?

En esencia, un gestor de código fuente, también llamado gestor de versiones, es una herramienta que se encarga de registrar todos los cambios por los que van pasando nuestros archivos (de código o de otro tipo), de modo que podamos consultar estos cambios, volver hacia atrás, ver quién hizo qué y cuándo, etc. En realidad van mucho más allá todavía, ya que permiten también colaborar con otras personas, trabajar en paralelo en diferentes características sin molestarse (a otros o a nosotros mismos), resolver conflictos, tener copias de seguridad de los proyectos sin riesgo de perderlos, y muchas otras cosas. Además, muchas otras herramientas se apoyan en el control de código para darnos más capacidades: flujos de trabajo en equipo, revisión del código, testeo automático, comentarios sobre el código, integración y despliegue continuos de sistemas...

El principal producto de tu trabajo es el código. Y como tal debes protegerlo. El código no son solo instrucciones escritas en un archivo de texto: es conocimiento sobre un problema y sus sutilezas, que además va evolucionando y creciendo con el tiempo. Es indispensable proteger el fruto de nuestro trabajo contra desastres, pérdidas, errores humanos y la inevitable entropía que va a ocurrir con el paso del tiempo.

Por ello, aunque trabajes en solitario, usar un sistema de control de versiones es indispensable (y no, no sirve sacar copias a mano ni usar un disco Cloud estilo OneDrive o Dropbox: olvídate). Y una empresa de desarrollo en la que no se utilice control de código, no merece llamarse así y está condenada a desaparecer. Así de duro, así de real.

La cuestión no es si debes utilizar un sistema de control de código o no, sino cuál de los existentes debes elegir.

Git: el gestor de código fuente más utilizado del mundo

Si te preguntan quién es Linus Torvalds, seguro que no tardas nada en responder: "El creador de Linux". Lo que no todo el mundo sabe es que, además, es el creador de un producto incluso más importante para nuestra industria: Git.

Git es el gestor de código fuente que domina el panorama desde hace años y que la práctica mayoría de desarrolladores y empresas utilizan hoy en día.

Git ofrece varias ventajas frente a otros sistemas tradicionales:

  • Sistema distribuido, sin un punto central de fallo, que permite el trabajo incluso sin conexión.
  • Superrápido y ligero, optimizado para hacer operaciones de control muy rápidas.
  • Crear ramas y mezclarlas es rápido y poco propenso a problemas, al contrario que en otros sistemas tradicionales.
  • La integridad de la información está asegurada gracias a su modelo de almacenamiento, que permite predecir este tipo de problemas. En sistemas tradicionales este era un problema grave.
  • Permite flujos de trabajo muy flexibles.
  • El concepto de área de preparación o staging permite versionar los cambios como nos convenga, no todo o nada.
  • ¡Es gratis! y de código abierto.

Pero, como todo, también tiene sus problemas:

  • Es más complejo que los sistemas centralizados tradicionales porque entran en juego más repositorios, más operaciones y más posibilidades para trabajar en equipo, que hay que decidir.
  • La curva de aprendizaje es empinada. Lo básico lo aprendes enseguida, pero la realidad te demuestra que no es suficiente "tocar de oído" con él. La documentación es tan compleja que muchas veces no resulta de ayuda.
  • Los comandos y algunos conceptos que usa pueden llegar a ser confusos, al igual que algunos mensajes que muestra.
  • Por defecto, se lleva mal con archivos binarios muy grandes, como vídeos o documentos gráficos muy pesados. Por suerte existen soluciones para ello (Git LFS).

Y es que, como decía el tío Ben: "Un gran poder conlleva una gran responsabilidad". Personalmente me gustan mucho estos dos diagramas del clásico artículo de Steve Bennet "10 things I hate about Git" y que le tomo prestados.

El primero muestra el flujo típico de trabajo con Subversion, el sistema gestor de código clásico por antonomasia:

Como vemos, las operaciones son muy pocas y cualquiera lo puede dominar muy rápido.

El siguiente muestra el típico flujo de trabajo con Git, que involucra además de nuestro repositorio local, su área de trabajo, el área de preparación y dos remotos:

Mucho más complejo, pero mucho más poderoso 😱

Aprender Git bien

Personalmente pienso que el mayor problema de Git, y su mayor fuente de frustración, proviene de que en muchas ocasiones se utiliza sin tener los conocimientos apropiados. Los cuatro comandos básicos son muy sencillos y enseguida puedes estar utilizándolo en un proyecto. Pero luego, la realidad es mucho más compleja. Si trabajas con más gente, no hay unas pautas claras de cómo gestionar el código, y el proyecto empieza a crecer, es cuando empiezan los problemas.

Es por ello que en campusMVP hemos lanzado un curso para aprender Git bien. La formación parte de cero y se preocupa no sólo de enseñarte cuatro recetas para salir del paso, sino que te explica bien los conceptos involucrados para que comprendas lo que estás haciendo, te enseña técnicas más avanzadas, flujos de trabajo, gestión de remotos... e incluso aprenderás a lidiar con archivos binarios de gran tamaño, uno de los puntos débiles de la herramienta. Encima, su autor David García, ha sido capaz de hacerlo muy enfocado y directo al grano para que puedas dominarlo en poco tiempo.

¿Qué más se puede pedir? Pues que el propio David sea el que esté pendiente de tus dudas durante el curso para responderlas y ayudarte en el camino mientras aprendes.

Si tú o tu equipo no usáis un gestor de código fuente, ya estáis tardando en aprender 😊

José Manuel Alarcón Fundador de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José Manuel Alarcón
Archivado en: Herramientas

¿Te ha gustado este post?
Pues espera a ver nuestro boletín mensual...

Suscríbete a la newsletter

La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.