← Volver a la lista de posts

Git y Github

Git es un sistema de control de versiones distribuido, diseñado y desarrollado inicialmente por Linus Torvalds en el 2005 cuando BitKeeper, el sistema de control de versiones que utilizaban para el desarrollo de Linux, cambiara su licencia y no permitiera su uso libre. En este post vamos a explicar qué es Git y cómo se relaciona con Github.

Git, y en general un sistema de control de versiones, tiene dos objetivos principales:

  • Guardar el historial de cambios sobre el código de un proyecto.
  • Permitir a varias personas contribuir simultáneamente sobre un mismo proyecto.

Para guardar el historial de cambios podríamos crear una nueva carpeta en nuestro computador y copiar todo el proyecto cada vez que quisiéramos hacer un cambio. Eso no es muy diferente a lo que hace Git por debajo cada vez que se hace un commit.

¿Qué es un commit?

Un commit es una fotografía (snapshot) de tu proyecto en un momento determinado. Un commit tiene una fecha y hora, un mensaje que describe los cambios que se hicieron desde el último commit, y un autor.

Git es una aplicación de consola con varios subcomandos que nos permiten, entre otras cosas, hacer commits, ver los cambios a los que no les hemos hecho commit, listar los commits, y ver la diferencia entre commits.

Después de que has instalado Git, puedes abrir una consola y ejecutar el comando git sin parámetros. Verás el uso general del comando y algunos de los subcomandos más utilizados:

germanescobar ~$ git
usage: git [--version] [--help] [-C <path>] [-c name=value]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]

The most commonly used git commands are:
   add        Add file contents to the index
   bisect     Find by binary search the change that introduced a bug
   branch     List, create, or delete branches
   ...

'git help -a' and 'git help -g' lists available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.

¿Cómo utilizar Git?

El flujo más simple de trabajo con Git es el siguiente:

1. Inicializa el repositorio (esto va a crear una carpeta oculta .git dentro del proyecto):

$ git init

2. Trabaja en el código: crea, modifica y elimina archivos.

3. Selecciona los cambios que vas a incluir en el siguiente commit:

$ git add index.html
$ git add style.css

Puedes incluir todos los cambios con el siguiente comando:

$ git add -A

4. Haz commit:

$ git commit -m "El mensaje del commit"

5. Repite los pasos 2, 3, y 4.

¿Cada cuánto hacer commit?

Puedes hacer commit tan seguido como quieras. No hay una regla de oro. Mi sugerencia es agrupar un número de cambios que puedas describir en una línea y que tengan sentido en el historial del código. Puede ser un único cambio en un archivo, o múltiples cambios en varios archivos.

¿Cómo escribir un mensaje de commit?

La primera línea debe tener 50 caracteres, o menos, y es obligatoria. La pregunta que debería contestar la primera línea es: ¿qué hace este commit? Ejemplos de respuestas: "Cambia el tamaño de la fuente a #666" o "Crea el modelo User".

Opcionalmente, después de la primera línea, va una línea en blanco y más detalles de los cambios que incluye el commit: efectos secundarios, explicación de por qué se está haciendo el cambio, etc.

Github

Los pasos que describimos anteriormente almacenan el historial del código localmente en la carpeta oculta .git dentro de la raiz de tu proyecto (repositorio local). Si pierdes tu computador, pierdes tu código y su historial.

Podrías hacerle backup, o sincronizarlo en Dropbox (o algún servicio similar), pero si quieres que varias personas trabajen sobre el mismo proyecto, eso no va a funcionar.

Github nos brinda la posibilidad de crear un repositorio remoto (una réplica de nuestro repositorio local) en el que varios desarrolladores pueden colaborar, con herramientas que facilitan esa colaboración. Github es gratis para proyectos Open Source, pero si quieres tener repositorios privados, debes pagar una mensualidad (los planes empiezan en 7 dólares al mes).

El primer paso para trabajar con Github es registrarte, crear un repositorio y seguir las instrucciones que aparecen en la pantalla. Puedes empezar con un nuevo repositorio, o subir un repositorio local.

Recuerda que al hacer commit en tu repositorio local, esos cambios no se ven reflejados automáticamente en el repositorio remoto. Debes hacer git push para subir tus commits locales al repositorio remoto y git pull para traer los commits que otros han subido a tu repositorio local.

Por ejemplo, para actualizar tu repositorio local con los cambios que han hecho otros desarrolladores en el repositorio remoto puedes ejecutar el siguiente comando:

$ git pull

Por otro lado, para subir los commits locales que aún no existen en el repositorio remoto puedes ejecutar un comando similar al siguiente (los parámetros pueden variar según el repositorio y la rama que quieras subir):

$ git push origin master

Flujos de trabajo

Una ventaja/desventaja de Git es que es muy flexible y no hay una única forma de usarlo. En la sección ¿Cómo utilizar Git? describimos el flujo de trabajo más simple, pero no necesariamente el más recomendado. La razón es que Git es muy estricto en el orden de los commits y ese flujo de trabajo puede crear conflictos si varios están trabajando sobre el mismo proyecto (al hacer push).

Para eso existen las ramas (branches).

¿Qué es un branch?

Las ramas (branches) en Git son una poderosa herramienta que les permite a los miembros de un equipo trabajar en paralelo sobre un mismo proyecto y hacer experimientos que pueden eventualmente integrarse a la rama principal (master).

Hay varias formas de utilizar branches para el trabajo en equipo y cada empresa lo hace diferente. Si quieres conocer el flujo que utilizamos en elibom.com haz click acá.

Más recursos

¿Cómo convertirte en Desarrollador Web?

Descarga gratis el e-book

Conoce la mentalidad, los roles y las tecnologías que debes saber para convertirte en desarrollador Web.

Descargar e-book