Recientemente me he convertido en mentor de un compañero de trabajo.  Y mi mentorando me ha preguntado sobre Git en varias ocasiones. ¡Esto es por ti compañero! P.D. Debería de haber escrito este artículo cuando comenzamos pero, ¡espero que también ayude ahora!

Y recuerda: La mejor manera de aprender algo es haciéndolo por ti mismo. Y como mi mentor siempre me decía: Udaraj!

Básicos

0-2GkM1pvDmnI2ksUM

Entonces, ¿por qué Git es tan importante?

Vamos a empezar primero citando la primera línea de la página sobre Git en Wikipedia:

Git (/ɡɪt/) es un software de control de versiones para llevar el registro de los cambios en los archivos de tu ordenador y coordinar el trabajo que varias personas realizan sobre archivos compartidos.".

Esto significa que la función más básica e importante de Git es permitir a grupos de personas añadir (y fusionar) código al mismo tiempo en el mismo proyecto. Añadiendo esta opción a los proyectos, hace a los grupos más eficientes y les otorga la habilidad de trabajar en proyectos más grandes y en problemas más complejos.

Existen muchas otras cosas que Git hace realmente bien: nos permite revertir cambios, crear nuevas ramas para añadir nuevas características, resolver conflictos de fusión, y muchas más.

Cómo funciona

Git almacena los proyectos en repositorios. Se hacen las confirmaciones (commits) al proyecto y le informas a Git de que estás satisfecho con los archivos nuevos o modificados que has has creado.

El código creado como nuevo/con cambios se confirman en las ramas. La mayoría del trabajo es confirmado en otras ramas y fusionado con la rama master. Todo esto es almacenado en el mismo directorio que el proyecto pero en una sub carpeta llamada .git.

Para compartir el código con tus compañeros tienes que enviar (push) los cambios al repositorio. Para añadir el código nuevo de tus compañeros, tienes que traer (pull) los cambios del repositorio.

git-hosting-services-1

Entonces, qué son GitHub, GitLab y Bitbucket?

Bien, ¡me alegro de que lo preguntes! Este tipo de aplicaciones se llaman servicios de gestión de repositorios. Juegan un papel crucial en el desarrollo de software moderno.

Pese a que Git y Github son la mejor opción en cuanto a sistemas de control de versiones, GitHub tiene fuertes competidores como GitLab y Bitbucket. No obstante, si sabes utilizar GitHub, no tendrás ningún problema en trabajar con GitLab o Bitbucket.

Por tanto, para dejarlo claro: Git es la herramienta, y GitHub es el servicio para los proyectos que usa Git.

¿Dónde puedo descubrir proyectos interesantes y conectar con otros desarrolladores?

GitHub, GitLab y Bitbucket tienen opciones de búsqueda de repositorios públicos y la posibilidad de seguir a otros usuarios.

¿Puedes ver por qué es importante saber manejar Git y Github (GitLab/Bitbucket)? Lo único que nos queda por hablar sobre los comandos, es darte unas simples reglas que tendrás que seguir cuando uses Git:

  • Regla 1: Crea un repositorio Git para cada proyecto nuevo
  • Regla 2: Crea una nueva rama para cada característica

Comandos

Para empezar con Git lo tienes que tener instalado en tu ordenador. Si todavía no lo tienes, puedes visitar su página y seguir las instrucciones para obtenerlo.

Inicializar un nuevo repositorio: Git init

Todo tu código será rastreado y rastreable en el repositorio. Para inicializar un repositorio en git, ejecuta este comando mientras estés en la carpeta del proyecto. Éste creará un archivo .git.

git init

Git add

Este comando añade uno o todos los archivos cambiados en el área de preparación.

Para añadir un solo archivo a la preparación:

git add nombredelarchivo.py

Para preparar archivos nuevos, modificados o eliminados:

git add -A

Para preparar archivos nuevos y modificados:

git add .

Para preparar archivos modificados y borrados:

git add -u

Git commit

Este comando guarda el archivo en versión histórico. El -m significa que le acompaña un mensaje de confirmación. Este mensaje es personalizable y lo debes de usar para indicar a tus compañeros o a tu yo del futuro que ha sido realizado, añadido o modificado en ese commit.

git commit -m "tu mensaje"

Git status

Este comando te informa del estado de los archivos de tu proyecto y listará los archivos en verde o en rojo. Los archivos en verde se han añadido a la preparación pero no se han confirmado todavía. Los archivos marcados en rojo son aquellos que no han sido añadidos a la preparación.

git status

Trabajando con ramas

Git branch nombre_de_rama

Este comando creará una nueva rama

git branch nombre_de_rama

Git checkout nombre_de_rama

Para cambiar de una rama a otra:

git checkout nombre_de_rama

Git checkout -b nombre_de_rama

Para crear una nueva rama y cambiar a ésta automáticamente: (comprobar que se puede hacer sin commit de la rama en la que estás, porque creo que no se puede cambiar de rama sin hacer commit en la que estás)

git checkout -b nombre_de_rama

Es la forma abreviada de hacer:

git branch nombre_de_rama
git checkout nombre_de_rama

Git branch

Para listar todas las ramas y ver en qué rama estás trabajando en ese momento:

git branch

Git log

Este comando listará el histórico de las versiones de la rama en la que estás trabajando:

git log

Push & Pull

Git push

Este comando envía los cambios confirmados a un repositorio remoto:

git push

Git pull

Para descargar los cambios realizados en el servidor remoto en tu ordenador:

git pull

Consejos y Trucos

Desecha tus cambios sin confirmar

Tal y como se indica, este comando descartará todos los cambios sin confirmar:

git reset --hard

Elimina un archivo de git sin eliminarlo de tu ordenador

A veces, cuando utilizas el comando "git add", puedes añadir archivos que no querías añadir.

Si no eres cuidadoso durante un "git add", puedes acabar añadiendo archivos que no querías añadir. Debes eliminar el archivo de la versión de preparación, para añadirlo al archivo .gitignore para evitar cometer el mismo error una segunda vez:

git reset nombre_del_archivo
echo filename >> .gitignore

Editar un mensaje de confirmación

Es muy fácil arreglar un mensaje de confirmación:

git commit --amend -m "nuevo mensaje"

¡Gracias por tu lectura!

Traducido del artículo de Goran Aviani - How to understand Git: an intro to basic commands, tips, and tricks