Curso de git y github desde cero

Git branch

Capítulo 6: Branch - ¿Qué son las ramas?

En este capítulo aprenderás lo que son las ramas de Git conocidas como branches en inglés.

¿Qué es una rama (branch) de Git?

Las ramas son pequeñas nuevas versiones de tu proyecto.
Supongamos que ya tienes creada la primera parte importante, de por ejemplo, un sitio web. En este caso, puedes crear una o varias ramas nuevas para que en caso de que no te convenzan las nuevas modificaciones, puedas ir atrás o adelante según lo necesites.

Ramas de Git

Al trabajar sin ramas Git, encontrarás muchos problemas y dificultades. Veamos un supuesto práctico en el que se está desarrollando un sitio web.

Terminada la primera versión del sitio web, pasado un tiempo se quiere hacer una gran modificación.

En el caso de que no utilicemos Git, todo será una única versión, la cuál, iremos modificando por encima. Tendremos que hacer copias manualmente o con un software de copias de seguridad cada equis tiempo, de forma que podamos recuperar el código anterior si nos equivocamos o no nos convencen los nuevos cambios.
Al final, podemos tener un montón de copias alternativas del proyecto que no sabemos si realmente nos sirven.
Esta es una de muchas desventajas que irás descubriendo.

En cambio, ¿Cómo sería esto utilizando Git?
Crearíamos una nueva rama al terminar la versión y trabajaríamos a partir de esta. De esta rama, podemos hacer más ramas con modificaciones diferentes.
Si en algún momento no nos convence algo, podemos volver atrás sin más, ya sea a la rama principal (master) o bien a otra rama que haya entre medio.

¿Tengo que hacer copia de seguridad con Git?

Debes tener al menos una copia del proyecto Git entero. De lo que hay dentro del proyecto, ya se encarga Git de gestionarlo, tu solo tendrás que darle sencillas instrucciones. No tienes que hacer copias de versiones ni nada por el estilo.

¿Cómo se crea una rama nueva en Git?

Partimos del proyecto de los capítulos anteriores. Teniendo en cuenta que ya hemos realizado los primeros commit y que todo está guardado en la rama principal (master).

Para crear una rama lo debes hacer con el siguiente comando:

git branch version_2

Aunque no nos lo comunique, la rama llamada version_2 ya está creada. Para comprobarlo, podemos ver las ramas creadas escribiendo solo git branch.

git branch
Git branch

Aparece en color verde y con un asterisco la rama en la que estamos trabajando, la rama master.

Moverse a una rama de Git

Para acceder e ir a trabajar con una rama en concreto, lo podemos hacer con git checkout y el nombre de la rama.

git checkout version_2
Git checkout

¿Qué es el head de Git?

El término head en el caso de Git, se refiere a la rama que tenemos activa en la consola. En la imagen de arriba puedes ver el head de color azul celeste. En primer lugar aparece la rama master. En la segunda parte de la imagen, cuando ya he cambiado de rama, el head me indica que estoy sobre la rama version_2.

Modificaciones en las ramas de Git

Hagamos algunas modificaciones a los archivos en esta nueva rama. Supongamos que queremos eliminar la hoja de estilos .css con su carpeta incluida y que hacemos alguna modificación en la página .html.

Los commit que hagamos, los haremos sobre la rama en la que esté el head. Para editar una rama, utiliza el comando git checkout.
En este momento, me encuentro trabajando en la nueva rama, version_2, por lo que el commit se va a aplicar a esta.

Como eliminar directorios vacíos o llenos en Git Bash

Para eliminar una carpeta vacía lo haremos con el siguiente comando:

rmdir nombre_carpeta

No obstante, si la carpeta contiene archivos como es el caso de la carpeta css, no vamos a poder:

Borrar carpetas desde la consola

Tenemos dos opciones desde la consola, o bien eliminamos primero los archivos que hay dentro de la carpeta con el comando rm:

rm test.css

La segunda opción es forzar a eliminar la carpeta y su contenido añadiendo la siguiente opción al comando rm:

rm -r css
Eliminar carpeta con archivos

Aquí tienes la modificación que le he hecho a la página html:

Página index.html

<!doctype html>
<html lang="es">
<head>
	<meta charset="utf-8">
	<title>Página principal del proyecto</title>
	<meta name="description" content="Página principal para el proyecto de Git">
	<meta name="author" content="Programación Fácil">
	<script src="js/test.js"></script>
	<link href="css/test.css" rel="stylesheet" />
</head>

<body>
	<p>Este párrafo está escrito sobre la hoja index.html</p>
</body>
<html>

Con la hoja de estilos eliminada, su carpeta y la página html modificada, nos quedará una estructura de proyecto como esta:

Proyecto Git

Es el momento de finalizar y realizar el commit de esto sobre la nueva rama.

git add --all
git commit -m "En esta nueva versión elimino la carpeta css y modifico el index.html"

¿Como puedo recuperar el trabajo de otra versión en Git?

Una parte importante y totalmente esencial de Git es la de poder cambiar entre versiones y ediciones de tus programas o sitios web. Supongamos que nos arrepentimos y queremos volver a la versión inicial donde teníamos la carpeta de css. Podemos regresar atrás en el tiempo, basta con hacer un checkout.

git checkout master

Sorprendentemente, nuestra estructura está intacta sobre el último commit que hicimos sobre la rama master.

Proyecto de Git

¿Quieres regresar de nuevo a version_2?
Haces lo mismo y listo.


Comentarios

Si te quedan dudas sobre el temario, sobre html, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.

Programación Fácil YouTube

Suscríbete

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.