Cómo instalar Git e iniciarse en los mundos del versionado

Si en tu día a día te dedicas a desarrollar software seguro que conoces Git, espero por tu bien, si no te suena de nada bueno… no te preocupes porque te voy a explicar qué es y cómo puedes instalar Git en tu máquina.

En el desarrollo a nivel serio tenemos que asegurarnos de alguna forma que el código que estamos produciendo esté guardado en algún servidor para que si un día nuestro ordenador muere podamos volver a acceder a el fácilmente.

Vamos, un servidor de backups diría alguno….

Si, pero con mas cosas.

Estos servidores son llamados como servidores de control de versiones y permiten llevar un control exacto sobre los cambios en los ficheros que ahí se guardan.

Da igual el tipo de archivo que subas ahí (algunos no se aconsejan) que podrás ver el histórico de… si se ha añadido algo nuevo… se ha borrado algún fichero… otro compañero ha modificado parte de un documento… etc…

¿Se entiende no?

Pues este tipo de servidores se configuran con cierto software. En el mercado existen muchas opciones pero el que ya se ha convertido casi en un estándar es Git y hoy vamos a aprender a usarlo.

 

¿Qué es Git?

Aunque ya te lo he explicado antes hablando de los servidores VCS…

Según la Wikipedia:

Git (pronunciado “guit”​) es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos de código fuente. Su propósito es llevar registro de los cambios en archivos de computadora y coordinar el trabajo que varias personas realizan sobre archivos compartidos.

 

Primer paso: Instalar Git

Lo primero que tienes que sabes es que Git es un programa puramente de consola, de terminal, de línea de comandos… como quieras llamarlo pero de esa ventanita negra con solo letras.

terminal de comandos

Así que, si estas empezando a programar ves quitándote el miedo ella porque la vas a tener que utilizar si o si.

Voy a decir también que existen programas de escritorio que añaden una capa gráfica, visual y por encima de Git que tal vez a los mas novatos les funcione.

Pero es mejor trabajar cuanto antes desde la línea de comandos.

Así que….

 

Cómo instalar Git en Linux

Si tu ya tienes alguna distribución basada en Linux instalada en tu máquina mi enhorabuena. Ya has hecho un gran paso para perderle el miedo a la terminal de comandos.

Imagino que si estas leyendo esta parte es por que tienes un Ubuntu así que voy a poner el ejemplo de instalar Git en Linux sobre esta distribución pero si tienes otra por ejemplo que este basada en Debian, por ejemplo Mint, no te costará tampoco mucho esfuerzo.

Tenemos que abrir la terminal de comandos. Desde el mismo Dash buscando por terminal o desde el Escritorio y pulsando Control, Alt, T (ctrl + alt + t) podremos abrir la consola y empezar a jugar a ser juanquers.

 

Soy programador

 

Una vez que tengamos la consola abierta tenemos que escribir lo siguiente:

sudo apt-get update

Este comando lo que hace es actualizar el repositorio de paquetes disponibles. Es decir, las referencias que le dicen dónde esta el software que queremos instalar.

Cuando se haya actualizado ya podemos instalar Git en Linux escribiendo lo siguiente:

sudo apt-get install git

Déjalo que se vaya instalado solo y cuando acabes ya podremos empezar a usar Git como un loco.

Puedes comprobar que se ha instalado correctamente Git comprobando la versión.

Si ejecutas la siguiente línea:

git version

Te debería salir lo siguiente:

Comando Git version
Comando Git version

Cómo instalar Git en Mac OS X

Es muy posible que ya lo tengas instalado. Algunas versiones de OS X ya viene con Git instalado por defecto, junto a otras herramientas.

Pero en caso de que no lo tengas instalado al ser un sistema operativo basado en UNIX, su proceso de instalación es igual de sencillo que cuando se instala en Linux.

O incluso mas!

Entra en esta dirección https://git-scm.com/download/mac y comenzará a descargarse el paquete instalador.

Cuando lo tengas abierto lo demás es ya Siguiente > Siguiente > Siguiente.

instalar git en mac

Una vez que se termine de instalar podemos comprobar que todo el proceso ha ido bien escribiendo:

git version

Pero también podemos instalar git de otra forma y es desde la terminal…

Instalar Git en Mac desde la terminal de comandos

Puedes hacerlo desde Homebrew, si no tienes esto ya instalado en tu Mac ya estás tardando porque simplifica enormemente el proceso de instalación de software.

Para instalar Homebrew que después nos ayudará a instalar Git abre la terminal y escribe lo siguiente:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" brew doctor

Esta línea comenzará el proceso de instalación y te preguntará además que si deseas instalar las herramientas de desarrollo de línea de comandos de Apple. Instálalo todo y ejecuta la siguiente línea:

brew install git

Ya está, ya lo habrás instalado. A disfrutar!

 

Cómo instalar Git en Windows

¿Quién dice la Wikipedia que ha creado Git?

Linus Torvals, el padre de Linux. Por lo cual podemos deducir que este programa no chutará bien en Windows. Ya sea por limitación y/o arquitectura de Windows contra Linux.

Pero aun así podemos instalar Git en Windows fácilmente. Desde la propia página web de GIT nos ofrecen una herramienta con la que podemos emular comandos pensados para sistemas Unix en nuestro flamante y no-espiador Windows 10.

Git Bash se llama.

Entra en la web https://git-scm.com/download/win y automáticamente empezará descargar del ejecutable que te va a instalar Git y Git Bash, la capa de abstracción entre los dos sistemas.

Cuando lo tengas descargado, ejecútalo y lo siguiente ya es hacer click como un loco en Siguiente, Siguiente, Siguiente.

Poca configuración lleva…

instalar git en windows
Instalar git en windows

 

Elegir el directorio donde se va a instalar GIT

Addons de Git en Windows

Mas configuración

Mas configuración git

200 años mas tarde

Instalando Git en Windows

terminal de git bash

Bravo 👏👏

 

Clientes de escritorio para Git

Para que no tengas que aprender a manejar Git (no recomendado) desde la consola he recopilado un par de clientes de escritorio que a pesar de ser un buen apoyo en cuestiones de logging también nos permite hacer lo mismo que se hace desde la terminal.

Hay clientes de escritorio tanto para Windows, para Mac OS X como para Linux, pero los mejores son los siguientes:

Sourcetree

Sourcetree logoEste bicho es compatible para ordenadores tanto con Windows como con Mac.

Tiene una interfaz muy clara y muy limpia lo que lo hace ideal para los que están empezando con el control de versiones aunque también es realmente útil para la gente que ya domina Git.

Puedes usarlo tanto para Git como para Mercurial (otro tipo de software de control de versiones) y entre sus ventajas tenemos:

  • Soporte para ficheros grandes
  • Integración con Git-flow
  • Soporte para submódulos en la administración de proyectos
  • Búsqueda en el local stage de commits

sourcetree atlassian

Por estas y otras razones junto a que es un programa totalmente gratuito lo recomiendo como una de las mejores opciones para Windows. Pero no para Mac, que tiene cosas mejores.

Puedes descargar Sourcetree desde aquí.

Github Desktop

Github Desktop logoAunque personalmente no lo he probado ya entrar en la web hace que te den ganas de bajártelo.

Tanto la web como el programa tiene un diseño realmente cuidado sabiendo diferenciar lo que es muy bien la parte del git log y su histórico de la parte de revisión de código.

Es otro de los programas que también van a funcionar tanto en Windows como en Mac.

A parte de integrar todas las funciones que integra cualquier otro cliente de escritorio de git, un punto a favor que le he visto es que en cada commit se integra el resultado de los tests de Integración Continua.

programa github desktop

Puedes descargarlo desde aquí y es gratis también.

Si quieres ver como han construido este programa puedes hacerlo desde su repositorio de Github.

GitKraken

gitkraken logo

La corona entre el hypeo maquetero.

Pese a ser un programa multiplataforma y encontrarse tanto en Linux como en Mac como en Windows, no se por qué pero una gran cantidad de usuarios de Mac sólo utilizan este programa…

La verdad es que este software si que te entra por la vista muy fácilmente ya que su diseña está cuidadísimo en extremo.

Tiene una versión gratuita para usos no comerciales y otra de pago para empresas. La verdad es que se entiende tanta emoción alrededor de este programa simplemente por los partners que tiene detrás .

Hay compañías como Lego, Tesla, Google o Amazon que están usando sus soluciones así que es una buena garantía de uso.

gitkraken

Podeis descargarlo desde aquí.

 

Conclusiones

Con todo lo que hemos visto ya tendríamos suficiente para poder instalar git en cualquier sistema operativo y comenzar a usarlo con nuestros proyectos.

Otra cosa ya es cuando entremos en el uso de sistemas distribuidos de git como cuando alojamos nuestros proyectos en Github o Bitbucket, pero para comenzar a tirar comandos de git con esto ya tienes de sobra.

Durante el artículo he dejado claro que soy un usuario pro-terminal siempre. He tenido, tengo y tendré clientes de escritorio de git toda mi vida, pero ahí se quedan cogiendo polvo porque no los uso.

Haz el esfuerzo y aprende a utilizar git desde la consola.

Sus ventajas son muchísimas.

Pero si aun así no te sientes seguro o prefieres hacerlo con una interfaz gráfica tira hacia GitKraken, es el mas bonito de todos.

Al fin y al cabo con todos puedes hacer lo mismo.

GitKraken es fantasía pura.

magic

5 comandos GIT que deberías conocer

Que pasa chumachos!

Si estas leyendo esto en 2016 y no sabes que es GIT vas apañao. ¿Si te digo Sistema de Control de Versiones (CVS) te suena mas? ¿Si? ¿No? ¿No sabes no contestas? Bueno… en fin… vamos con una primera definición de la Wikipedia…

Git (pronunciado “guit”) es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos de código fuente

Ufff…. esto tampoco lo deja muy claro, bueno intentaré realizar una explicación mas simple mediante ejemplos, ¿cómo si no?…

Imagina que estas trabajando en un proyecto junto a un compañero, escribes un pedazo de código, lo pruebas en desarrollo y lo subes a pre-producción. A la semana, tu compañero encuentra un bug en ese pedazo de código tuyo, lo encuentra y lo arregla pero no quiere borrar tu código porque cree que mas adelante puede refactorizarlo para hacer un código mas limpio así que lo comenta en bloque para que, aunque no sea funcional, poder revisarlo mas adelante.

Siguen pasando las semanas de desarrollo y las subidas semanales a pre y producción y obviamente tu compañero y tu seguís con esta practica de comentar código, llegará un momento en que no sabréis que versión del código tenéis cada uno y que versión de código esta desplegado en producción. Se trasca la magedia…

Pues esta realidad tan arcaica fue algo muy común en los desarrollos hasta que llegaron los Sistemas de Control de Versiones y aunque en un primer impacto está pensado para el código fuente y ficheros en texto plano no es algo determinante ya que puedes aplicarlo a cualquier tipo de fichero informático, aunque luego tengas que leer trazas en base64 al resolver conflictos xD

Así pues con GIT vas a poder mantener tantas versiones como quieras de un fichero pudiendo volver atrás en el tiempo para rescatar un cambio que hiciste incluso, y aquí viene lo chulo, podéis trabajar varias personas sobre el mismo fichero sin tener miedo a perder cambios o pisaros los unos a los otros.

Actualmente el BFS (Big Fucking System) de este tipo de software es GIT, es el rey de todos los sistemas de control de versiones y mas junto a la plataforma Github que sirve para alojar proyectos Open Source utilizando este sistema aunque por supuesto existen otros competidores en el juego como Subversion o SourceSafe aunque están a años luz del rey.

Así pues, una vez hechas las presentaciones vamos a ver los comandos git típicos que deberías conocer para desenvolverte con total fluidez a la hora de versionar tu trabajo y sobre todo qué es lo que puedes hacer con GIT.

 

Los comandos git de los campeones

Has escrito código nuevo y lo quieres guardar en el servidor para que el resto de los compañeros puedan descargar tu aportación, con la siguiente secuencia de comandos git lo puedes hacer muy facilmente.

git add fichero.php imagen.png script.sql
git commit -m 'Adding my first changes'
git push origin issue/rama

Con estos comandos lo que estas haciendo es añadir tres ficheros (fichero.php, imagen.png y script.sql) al área de preparación y le añades un comentario específico a ese commit, para que trackearlo y después puedas encontrarlo rápidamente si es que lo necesitas. Con el último comando, push, estas enviando tus cambios a la rama issue/rama que se encuentra en el servidor origin, nombre por defecto que le da GIT al servidor.

Estos comandos git te permiten enviar cambios al repositorio
Estos comandos git te permiten enviar cambios al repositorio

 

¿Fácil no? ¿Pero y si lo que queremos es descargarnos los cambios de un compañero que están alojados en otra rama del servidor? Pues con los siguientes comandos git podemos hacerlo…

git checkout issue/rama_de_tu_compi
git pull origin issue/rama_de_tu_compi

El primer comando te cambiará tu área de trabajo a la rama issue/rama_de_tu_compi y con el segundo traerá los cambios que no hayas descargado de esa misma rama.

Guay, el utilizar estos dos comandos a la perfección son la esencia de GIT ya que sino no vas a poder trabajar, vamos mas básico que esto no hay nada. Hacer cambios y confirmarlos y descargarse cambios. Fin.

Pero vamos a ver otros comandos git un poco mas complicados o de Pro Master, coño.

Imagínate que estas felizmente trabajando en tu rama issue/rama y has tocado varios ficheros pero justo ha entrado una incidencia crítica que tienes que resolver que exige que cambies de rama pero no quieres perder esos ficheros modificados, aunque tampoco quieres mandarlos al servidor porque aun no están preparados. Bueno pues GIT tiene unos comandos para guardar de manera temporal estos cambios y luego poder recuperarlos.

git stash
git stash list
git stash apply

El primer comando va a guardar esos cambios no confirmados de manera provisional en tu máquina local. Importante resaltarlo ya que no se envían al repostorio. Con el segundo comando verás un listado de los diferentes conjuntos de ficheros almacenados provisionalmente y correctamente etiquetados con un hash. El último comando es para volver a aplicar sobre la rama los cambios que habías guardado de forma temporal en tu ordenador.

Si ejecutas el stash apply como pone en el ejemplo, se aplicarán los cambios de todos los ficheros, si quieres solo aplicar algún cambio en concreto habrá que pasarle al comando el hash identificativo que antes veíamos con el stash list.

¿Hasta aquí bien verdad?

Ok, pues imagina que estas trabajando en el fichero fichero.php y en el momento de commitearlo la cagas y ejecutas un git add *, esto lo que hace es enviar todos los ficheros al área de preparación. Obviamente solo quieres enviar fichero.php y también se te ha añadido script.sql porque detecta un cambio que no quieres enviar. Okay, que no cunda el pánico.

Para sacar un fichero del área de preparación y deshacer los cambios ejecuta los siguientes comandos git.

git reset HEAD script.php
git checkout -- script.php

Ale, ya esta fuera del área y lo has dejado como si no lo hubieses modificado, ya puedes ir a por el commit 😉

jeje pero que exagerado, si hay un incendio primero hay que hacer un git add *
jeje pero que exagerado, si hay un incendio primero hay que hacer un git add *

 

Muy bien si ya has conseguido llegar hasta el punto de modificar algo y enviarlo al servidor, eso teóricamente significa que tus cambios están listos para ser incluidos en la rama master.

La rama master es la rama que mantiene el código o los cambios que van a producción, aquí se encuentra la versión oficial y definitiva de los cambios, con la rama master no se juega.

Así que si tus cambios ya están terminados y han sido aprobados acabarán aquí. Muy bien, haces el commit y el push y en el momento de solicitar un pull request para que incluyan tus cambios sobre master… Meeeck, error, aparecen conflictos y no se puede mezclar. Aaaahhh la puta, a todos nos ha pasado y da muchísimo por culo.

La principal causa de que no puedas mergear tus cambios sobre la rama master es que en el momento de realizar los cambios en tu máquina no estabas completamente actualizado y sincronizado con el código de master o lo estuviste en el momento de abrir la rama para comenzar a trabajar pero algún listo ha hecho cambios que tu no tienes por lo que te has quedado completamente desfasado. Anda que no jode…

Bueno pues es tan sencillo como ejecutar los siguientes comandos git.

git checkout master
git pull
git checkout issue/rama
git merge master
git commit -m 'Merging master branch into issue/rama to avoid conflicts'
git push origin issue/rama

Con esto lo que estas haciendo es volverte a bajar master y actualizarla para que una vez tienes todo el código sincronizado con el repositorio actualizar tu rama issue/rama mezclando el código de master con ella misma. Creo que se entiende bien ¿no? Los otros comandos git ya los hemos visto mas arriba…

Como todo, y a raíz de esto, unos te dirán que todas las ramas deben de salir desde la rama development y que únicamente saldrán desde master cuando se trate de un hotfix y otros empezarán todas sus ramas desde master… en fin, toda esta filosofía git depende de como este organizado el proyecto ya que la teoría de ramas da para mucho, muchísimo, para un artículo enterito casi casi xD

En fin, esto es lo bueno de trabajar con GIT, ofrece flexibilidad ilimitada para que cualquier equipo de trabajo pueda organizar y mantener su propio proyecto como le de la gana, aunque también te digo que hay unas recomendaciones y buenas prácticas que ya veremos en otro momento…

Pues nada chachos, hasta aquí mi artículo sobre comandos GIT y segundo listado del 2016, Gorka eres un bocazas si tenéis alguna duda sabéis que podéis dejarla en los comentarios o utilizar twitter a través del siguiente banner 😉

[xyz-ips snippet=”FAQS-GORKAMU-TW-YELLOW”]

 

Hala a chuparla!