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.

Entradas relacionadas

Deja una respuesta

Tu direcci贸n de correo electr贸nico no ser谩 publicada.

Comentarios (3)

A ver si me he enterado
Basicamente ser铆a as铆:

– tienes un repositorio en bitbucket
– tienes que tener un repositorio en local.
– en tu local decir que vas a incluir x ficheros en el git. ser铆a con git add . o git add nombrefichero
– guardar los cambios en tu LOCAL git commit -m “comentario”
– SUBIR los cambios a tu remoto git push nombre-repositorio-remoto
– pegar ramas… git merge ….

… A ver , con Git puedes hacer mil cosas para versionar, lo logico es que tengas un sistema de ramas, master , developer, laramaConLoNuevaFuncionalidad, correciones rapidas o hot fix, etc.

Responder

Gracias crack muy bien explicado
Para gente nueva en el mundo git me ha dejado m谩s o menos claro como debo de trabajar cuando haga mis integraciones desde este entorno.

Pense que git era mucho m谩s sencillo para ya veo que se puede ampliar bastante y que puede ser bastante denso para proyectos de gran envergadura

Responder

Gracias por el post
y tambi茅n a帽adir

Para crear tu nuevo git a partir de los ficheros locales, basta con esto:


git remote add origin https://github.com/el-nombre-de-tu-git.git

Y luego haces el push tambi茅n con git y ya lo tendr铆as creado y arriba.

git push -u origin master

si alguien le vale .

Responder