Logo git

Mario González - Blog sobre desarrollo web

Aprender Git (I): Empezando con Git

Iniciamos con éste una serie de artículos de iniciación a Git, dirigidos a quien parte de cero y quiere usar este sistema de control de versiones en su código. Probablemente también será de utilidad para los que ya lleven tiempo usándolo, aunque sea para ayudarles a aclarar conceptos que ya están aplicando pero que no tienen muy claro qué significan.

Este primer artículo tiene forma de FAQ, para recoger y sintetizar algunas preguntas que suelen surgir al empezar a usar Git.

  1. ¿Qué es un sistema de control de versiones o VCS?
  2. ¿Qué es Git?
  3. ¿Qué significa que Git sea descentralizado o distribuido?
  4. ¿Qué son GitHub y Bitbucket?
  5. ¿Tengo que aprender a usar la consola de comandos?
  6. ¿Hay interfaces gráficas para Git?
  7. ¿Qué son las ramas en Git?
  8. ¿Qué es Git Flow?
  9. ¿Tiene sentido usar Git si soy el único que toca el código?

¿Quieres ver todos los artículos sobre Git?

¿Qué es un sistema de control de versiones o VCS?

A grandes rasgos, un sistema de control de versiones, o VCS (Version Control System), es un software que nos ayuda a mantener un histórico de cambios en nuestros archivos, almacenando información sobre cada cambio. Nos permite de algún modo viajar en el tiempo, pues podremos volver a un estado previo de nuestros archivos y regresar a la última versión sin que se pierdan los cambios.

También está preparado para que varios usuarios puedan estar haciendo cambios sobre los mismos archivos simultáneamente y ofrece una interfaz para resolver los posibles conflictos que puedan surgir.

¿Qué es Git?

Git es un VCS que se creó para controlar la evolución del kernel de Linux, y que en poco tiempo se empezó a usar masivamente para todo tipo de proyectos. En los últimos años se ha convertido en el VCS más usado.

Algunas características de Git:

  • Es muy rápido
  • Se basa principalmente en comandos de consola (aunque hay muchas interfaces gráficas, que veremos)
  • Es descentralizado o distribuido
  • Es Open Source

¿Qué significa que Git sea descentralizado o distribuido?

Git es un sistema de control de versiones distribuido porque, a diferencia de otros VCS importantes como Subversion, no se basa en un único repositorio centralizado al cual todos los miembros del equipo se conectan para contribuir, sino que tiene la particularidad de que cada miembro del equipo tiene un clon del mismo repositorio. El resultado es una red de nodos, donde cada nodo tiene una copia del mismo repositorio que hay en otros nodos (en realidad, esto es selectivo, un nodo puede tener archivos extra que no tienen los demás repositorios).

Aun así, la práctica habitual es usar un repositorio principal además de los que tiene cada miembro del equipo.

¿Qué son GitHub y Bitbucket?

Son servidores Git en la nube. Nos permiten alojar repositorios de manera rápida y cómoda, con una interfaz en forma de web y con todas las medidas de seguridad necesarias ya implementadas. Se suelen usar como repositorio central, aunque eso no quiere decir que la información esté centralizada en ese repositorio. Como vimos antes, los repositorios estarán clonados en cada nodo. Sin embargo, aunque es posible conectarse desde el ordenador de un miembro del equipo a otro, es mucho más cómodo usar uno de estos repositorios centrales como vínculo, porque está todo ya preconfigurado.

En el caso de Bitbucket, podemos tener tantos repositorios como queramos de manera gratuita, tanto públicos como privados. GitHub ofrece gratuitamente los repositorios públicos, pero para alojar repositorios privados hay que pagar.

¿Tengo que aprender a usar la consola de comandos?

Sí, puesto que lo recomendable es que la mayoría de acciones las realices a través de ella. Pero no hay que tenerle miedo, no hará falta que seas un usuario experto en Linux para poder manejarte con los comandos de Git. Al principio siempre cuesta más, pero con el tiempo verás que se le coge el truco y que no hay que saber demasiadas cosas.

Si eres usuario de Windows, lo mejor es que utilices Git Bash. Es una consola o shell que viene al instalar la versión de Git para Windows. Y si no, puedes utilizar cualquier otra, como el propio cmd o PowerShell.

¿Hay interfaces gráficas para Git?

Sí, pero lo mejor es primero acostumbrarse al uso de la línea de comandos y más tarde usar alguna GUI (Graphic User Interface) como apoyo a la consola. En futuros artículos veremos qué problemas trae confiar todo al uso de interfaces gráficas en Git.

¿Qué son las ramas en Git?

En Git las ramas funcionan de manera diferente a como lo hacen en otros sistemas de control de versiones. Mientras que en éstos una rama es una copia de una secuencia de cambios en el tiempo (si tengo tres ramas en Subversion, tengo tres copias con todos los cambios que han sufrido esas tres ramas), en Git una rama es sólo una etiqueta. Veremos más adelante qué supone esto, pero avanzamos ya que una de las características de Git es que puedes (y se aconseja) hacer todas las ramas que quieras sin apenas coste en velocidad ni en recursos.

¿Qué es Git Flow?

Existen muchos flujos de trabajo o maneras de organizarse al usar Git. Una de las más famosas se llama Git Flow, y es tan conocida que se han implementado extensiones para poder usarla mediante comandos. Git Flow es un modelo de uso de ramas que ha sido adoptado por gran parte de la comunidad de usuarios de Git por su eficacia y comodidad.

En futuros artículos de esta serie hablaremos de este sistema.

¿Tiene sentido usar Git si soy el único que toca el código?

Sí, porque Git te permite cosas como experimentar con nuevos desarrollos sin estropear el código que ya funciona, volver hacia atrás para encontrar el momento en que introdujiste un bug o tener un backup del código en un repositorio en la nube.

En el próximo artículo, Aprender Git (II): Instalando y configurando Git, empezaremos con los primeros pasos que necesitarás dar para utilizar Git en tus proyectos. Para ver más contenidos de la serie Aprender Git, aquí te dejo el índice de artículos:

¿Qué opinas?

Tu dirección de correo electrónico no será publicada. * Campos obligatorios