Ramas

Las ramas en git se podrían considerar una bifurcación de la linea de tiempo que tenemos en nuestro repositorio.
Esto es algo muy útil para solucionar ciertos problemas o experimentar en archivos sin manchar nuestro codigo.
Como bien dije en el apartado de repositorios remotos, cuando vayamos a subir nuestro repositorio debemos indicar una rama.
Esto se debe a que deseamos que las bifurcaciones tambien estén en nuestro repositorio remoto.

Ramas en Git

De la forma que vemos en la imagen es como git crea esas ramas. Crear una rama es algo muy sencillo.

git branch feature

Este comando crearía la rama feature. Eso simplemente crea una rama, ahora lo que debemos hacer es saltar a ella.

git checkout feature

Una vez estemos en la rama que deseamos, podemos realizar los cambios que queramos, porque una vez volvamos a la rama master ninguno de esos cambios se habrá llevado a cabo.
Podemos comprobar la rama en la que nos encontramos poniendo

git branch

De esa manera podremos observar todas las ramas que existen en nuestro repositorio.

Ahora bien, una parte delicada de las ramas son las fusiones. Es decir, una vez creada una rama, saltado a ella y realizado cambios debemos aplicarlo a la rama master si los cambios son definitivos.

Cuando estamos seguros saltamos a la rama que va a recibir los cambios. En este caso la rama master.

git checkout master

Una vez realizado esto lo que pondremos será

git merge feature

De esta manera se aplica los cambios de la rama feature sobre el trabajo existente en master.
Si los cambios se han realizado hacia delante, git nos informará de ello y simplemente unirá las ramas, pero no siempre es así, pueden surgir conflictos.
Los conflictos suelen surgir cuando git debe elegir 2 o mas cambios en la misma linea de un archivo, entonces no puede fusionar unas ramas debido a que tiene un conflicto.
Una manera simple para resolver los conflictos es usar

git mergetool

Cuando usemos mergetool nos apareceran las dos lineas en conflicto, simplemente debemos escribir el archivo definitivo y luego fusionar de nuevo.
Una vez fusionada una rama, podemos mantenerla y no volver a usarla o simplemente eliminarla con el comando.

git branch -d feature