Saltar al contenido
Codifíca.me | Desarrollo web | Programación

Tutorial básico de cómo funciona Git | Aprendiendo Git Rápido

13 mayo, 2019
git

Qué es y cómo funciona un repositorio Git

Git es un repositorio que almacenará el histórico de los cambios que vamos realizando. A diferencia de la mayoría de los repositorios git no sólo tiene un repositorio central, sino que cada usuario que quiera trabajar con git se clonará dicho repositorio en su máquina local, trabajará con él y sincronizará los cambios cuando quiera subir su trabajo o bajarse lo que haya subido otro usuario. Ésto debe quedar claro, trabajaremos constantemente con nuestro repositorio local y sincronizaremos los cambios cuando estén listos con el remoto.

 

Comandos básicos para manejar Git desde consola

Comandos básicos:

  • git clone <url>: nos clonamos el respositorio remoto en el directorio en el que estamos posicionados. Ahora ya tenemos el repositorio en local y podemos trabajar con nuestro repositorio.
  • git add <ficheros>: añadimos ficheros a nuestro repositorio. Es decir, le decimos a git que los ficheros indicados van a participar en el versionado y, por tanto, deben tenerse en cuenta.
  • git commit -m <mensaje>: hacemos permanentes nuestros cambios en nuestro repositorio. Como nuestro repo es local, ningún usuario podrá ver aún estos cambios.
  • git status: comprobamos el estado actual de git
  • git branch <nombrerama>: creamos una rama
  • git merge <nombrerama>: unimos dos ramas. Traemos la rama llamada <nombrerama> a la rama en la que nos encontramos actualmente.
  • git checkout <nombrerama>: nos posicionamos en una rama concreta.

Exceptuando git clone, todos estos comandos son para trabajar en local, aún no hemos sincronizado con el repositorio remoto. Estos son los comandos más usados para trabajar con el escritorio remoto.

  • git pull origin <nombrerama>: nos traemos los nuevos cambios que hayan hecho en el repositorio remoto. Si fuera a sobreescribir el trabajo realizado pediría un merge.
  • git push origin <nombrerama>: subimos nuestros cambios. Estos cambios deben estar ya en nuestro servidor (con un commit).

Qué es y como funciona gitflow

Introduciendo gitflow.

Gitflow es la forma más común de trabajar con git. Podemos ver más información en la imagen que viene a continuación. Fíjate en la ramas principales master , develop , y también en las ramas secundarias de nuevas características.

 

 

gitflow

 

 

Básicamente lo que se indica es que vamos a tener dos ramas permanentes: develop y master. En master sólo estarán las versiones en producción mientras que en develop se encontrarán todos los cambios que vayan haciendo los desarrolladores. Hasta ahí sencillo, ¿no?

Recuerda: Ramas permanentes: develop y master

Es importante que quede claro, sólo dos ramas permanentes: master y develop.

Estas son todas las ramas necesarias que se irán añadiendo para desarrollar:

feature-xxx

uso: Cada vez que se quiera hacer una modificación del código, por tanto, es el tipo de rama más creada
nomenclatura: feature-xxx donde xxx es el número de incidencia a la que va ligada. Podemos poner un nombre en su lugar para ir probando gitflow.
Sale de: develop.
Muere cuando: se comprueba que la modficación del código es correcta. Antes debe hacerse un merge desde develop para incluir estos cambios

release-xxx

uso: Cada vez que se quiera sacar una versión del código.
nomenclatura: release-xxx donde xxx es el número de versión. En ella se realizarán todos los tests.
Sale de: develop
Muere cuando: La versión está preparada para liberarse. Debe hacerse un merge hacia develop y hacia master. Si la versión ha salido a la primera bien, no tendrá ningún cambio que llevar hacia develop. Una vez hecho el merge desde master, se debe poner un tag indicando la versión.

hotfix-xxx

uso: Cada vez que hay un problema importante en el código en producción y hay que hacer un parche inmediato
nomenclatura: hotfix-xxx donde xxx es el número de versión. En ella se realizarán todos los tests.

Sale de: master (es la única rama que sale de master)
Muere cuando: La versión está preparada para liberarse. Debe hacerse un merge hacia develop y hacia master. Una vez hecho el merge desde master, se debe poner un tag indicando la versión.

develop

uso: donde está cada commit realizado. No se trabaja directamente en develop sino que se traen las ramas de feature, release y hotfix mediante merge
nomenclatura: develop.
Sale de: master, al crear el repositorio
Muere cuando: nunca, junto a master es una de las dos ramas permanentes

master

uso: donde está cada versión liberada. No se trabaja directamente en master sino que se traen las ramas de release y hotfix mediante merge. Esta rama tiene sólo las versiones liberadas, queda muy limpia y con muy pocos commits en ella.
nomenclatura: master.
Sale de: al crear el repositorio es la rama por defecto
Muere cuando: nunca, junto a develop es una de las dos ramas permanentes.
git

 

Parte práctica de Git para usuarios nuevos

Vamos a mostrar un ejemplo práctico de git, simplificado, dónde verás un poco como funciona git, no vamos a entrar en muchas ramas solo las imprescincibles para hacer unos pasos sobre git y veas como funciona.

Lo primero que hacemos es ir a Bitbucket, GitHub o GitLab y crear tu nuevo repositorio, en este caso vamos a crear un nuevo repositorio que se llamará superRepositorio.

Cuando lo creas generará una rama principal, por lo tanto tendremos una sola rama principal que se llama Master. Vamos a Branchs y decimos crear nuevo Branch, queremos crear la rama develop , que será desde la qué partiremos para hacer los desarrollos.

Bien, llegados a este punto tienes que tener dos ramas, Master y Develop , develop se ha generado a partir de Master, no tiene pérdida.

Ahora vamos a tu equipo local, abrimos una consola o terminal vamos a la ruta en la que queremos “bajar” el proyecto y lo clonamos.

Para clonarlo necesitamos la url que nos muestra en la web de GitHub o BitBucket , en estas webs nos suele dar dos urls una para ssh y otra para https, yo utilizo https , así que copiamos esa url y lanzamos un “clone” desde la terminal, sería algo así:


git clone https://codificame@bitbucket.org/codificame/superRepositorio.git

Esto bajaría y clonaría el nuevo proyecto, qué actualmente no tiene nada.
Nos vamos a situar en la rama develop, esto es muy fácil, hacemos un checkout. Sería algo así:


git checkout develop

Nota importante: Cómo hemos indicado al principio del post un repositorio Git tiene una parte remota, que es dónde se deben centralizar los cambios y una parte local, que en principio solo te interesa a ti. Luego puedes aplicar los cambios y sincronizar los desarrollos en el repositorio remoto.

Creando una nueva rama

Ahora vamos a crear una nueva rama partiendo de la rama de desarrollo para hacer la funcionalidad de poner un nueva característica a tu script. Escribimos el siguiente comando en la consola:

 


git branch nuevaCaracteristica

El paso anterior creará el nuevo branch, y el paso siguiente nos cambiará o posicionará en el nuevo branch que acabas de crear.


git checkout nuevaCaracteristica

Para hacerlo más rápido puedes utilizar un atajo, en este paso crearás el nuevo branch “nuevaCaracteristica” a partir de develop (si omites develop será a partir del branch que estés posicionado) y además te hará un cambio de posición al nuevo branch.

En resumen crea nuevo branch y posicionate en el, sería algo así:


git checkout -b nuevaCaracteristica develop

Llegados este punto tendrás dos ramas en el repositorio remoto Master y develop , y una rama en el repositorio local nuevaCaracteristica (en gitflow sería feature-xxx), qué es dónde vamos a desarrollar la nueva especificación, por ejemplo una nueva funcionalidad.

Si haces un git status podrás conocer donde te encuentras en ese momento y si hay cambios o el estado de tu rama actual.


git status

Si has seguido los pasos te debe mostrar que estás en el branch nuevaCaracteristica.

Si vas a la web en la que estés utilizando para tu repositorio Git, verás dos Branch en tu git remoto, pero no verás el nuevo Branch que está en local solamente. El git local solo lo tendrás en tu máquina.

Desarrollando en tu branch local

Vale, pues como esto es una prueba crearos el fichero que queráis y poner el texto que queráis. Después de tener este fichero creado vamos a decirle a nuestro versionador que queremos incluir todos los ficheros que hemos creado nuevos.

El comando que tienes que escribir para añadir estos ficheros es el siguiente:

git add .

Puedes escoger que ficheros se incluyen escribendo uno a uno cada fichero. Los que no estén incluidos se excluirán.

Tendrías que escribir el siguiente comando en tu terminal:


git add ficheroQueQuieroIncluir

Ahora vamos a hacer commit en ese branch y salvar los cambios con los ficheros nuevos, modificaciones, etc.

Para realizalo tendrás que escribir el siguiente comando en tu terminal:


git commit -m "Mensaje que quieras..."
git push nuevaCaracteristica

Pegando y añadiendo los cambios en el branch de desarrollo

Cómo ya hemos hemos acabado y probado la nueva característica vamos a copiar-pegar los cambios en el branch de desarrollo develop.

Para realizar esta taréa tenemos que hacer un Merge

Lo primero que debemos hacer es posicionarnos en el branch en el que queremos pegar los cambios.

Escribimos el siguiente comando en la consola:


git checkout developer

Te dirá que estás en developer, si quieres haz un git status para comprobarlo.

Ahora vamos a pegar mi branch nuevaCaracteristica en developer.

Para realiza esta taréa tendrás que escribir el siguiente comando en tu terminal:


git merge --no-ff nuevaCaracteristica

Enviándolo al servidor remoto

Bien, pues ahora ya solo nos queda enviar todo esto al servidor remoto, para que la versión remota quede actualizada.

Esto lo logramos con el siguiente comando en el terminal.


git push origin developer

Y además añadimos el branch nuevaCaracteristica al servidor remoto, por si en algún momento es necesario y queremos tener constancia de el.

Para añadirlo al repositorio remoto tenemos que utilizar push, sería así:


git push origin nuevaCaracteristica

Y poco más, espero que te haya servido, es un poco liosete al principio pero luego te acostumbras e trabajar con git de manera bastante rápida.

Si tienes dudas deja un comentario y te responderemos lo antes posible.