| # | Sección |
|---|---|
| 1 | ¿Por qué ramas? |
| 2 | Crear y cambiar de rama |
| 3 | Fusionar una rama |
| 4 | Gestionar un conflicto de fusión |
| 5 | Consultar el historial |
| 6 | Quiz — Ramas e historial |
| 7 | Práctica — Una funcionalidad en su rama |
| 8 | Síntesis |
Una rama es una línea de desarrollo independiente. Te permite trabajar en una funcionalidad nueva sin tocar la versión principal (main), que permanece estable.
Analogía: un documento compartido. En vez de editar directamente la versión oficial (riesgo de romperlo todo), trabajas en una copia de trabajo (la rama). Cuando estás satisfecho, fusionas tus cambios en el original.
Por qué es esencial:
| Rama típica | Rol |
|---|---|
main | Versión estable, lista para entregar |
feature/... | Nueva funcionalidad en curso |
fix/... | Corrección de bug |
# Listar las ramas (la actual está marcada con un *)
git branch
# Crear una rama
git branch feature-connexion
# Cambiar de rama
git switch feature-connexion
# Crear Y cambiar en un solo comando (recomendado)
git switch -c feature-connexion| Comando moderno | Equivalente antiguo | Efecto |
|---|---|---|
git switch nom | git checkout nom | Cambiar a una rama |
git switch -c nom | git checkout -b nom | Crear y cambiar |
git branch | — | Listar las ramas |
git branch -d nom | — | Borrar una rama fusionada |
git switches el comando moderno dedicado a las ramas.git checkoutsigue funcionando pero hace demasiadas cosas a la vez — prefiereswitchpara las ramas.
🔧 Mini-ejercicio — Escribe el comando que crea la rama feature-login y cambia a ella en una sola operación.
git switch -c feature-loginFusionar (merge) es integrar los cambios de una rama en otra — típicamente, traer tu funcionalidad terminada a main.
# 1. Situarse en la rama que va a RECIBIR los cambios
git switch main
# 2. Fusionar la rama de funcionalidad dentro
git merge feature-connexion| Tipo de fusión | ¿Cuándo? | Resultado |
|---|---|---|
| Fast-forward | main no se ha movido desde la rama | main avanza simplemente |
| Merge commit | main también ha evolucionado | Un commit de fusión reúne las dos historias |
# Tras una fusión exitosa, se puede borrar la rama
git branch -d feature-connexionRegla simple: te sitúas en la rama de destino (
main), luego fusionas la rama origen dentro. «Estoy en main, aspiro feature».
🔧 Mini-ejercicio — Estás en feature-login y el trabajo está terminado. Escribe los dos comandos para fusionar esta rama en main.
git switch main
git merge feature-loginUn conflicto aparece cuando dos ramas han modificado la misma línea de un mismo archivo. Git no puede elegir por ti: te pide que decidas.
Git inserta marcadores en el archivo en conflicto:
<<<<<<< HEAD
texto de la rama actual (main)
=======
texto de la rama fusionada (feature)
>>>>>>> feature-connexionPara resolver:
<<<<<<<, =======, >>>>>>>.git add archivo y luego git commit para finalizar la fusión.Un conflicto no es un error grave: es Git protegiéndote al negarse a adivinar. Mantén la calma, lee las dos versiones, quédate con la buena.
🔧 Mini-ejercicio — Cita los tres marcadores que Git inserta en un archivo en conflicto y que hay que borrar tras la resolución.
<<<<<<< , ======= y >>>>>>>. Una vez elegido el contenido correcto, se borran, luego se hace git add y git commit.
# Historial completo
git log
# Versión compacta (una línea por commit)
git log --oneline
# Con el grafo de las ramas y fusiones
git log --oneline --graph --all
# Ver las modificaciones de un commit
git show <hash>
# Ver quién modificó cada línea de un archivo
git blame fichier.txt| Comando | Responde a la pregunta |
|---|---|
git log | ¿Cuál es la historia del proyecto? |
git log --oneline --graph --all | ¿Cómo se ramificaron las ramas? |
git show <hash> | ¿Qué cambió exactamente este commit? |
git blame fichier | ¿Quién escribió esta línea, y cuándo? |
El historial Git es una máquina del tiempo. Bien usado (con buenos mensajes de commit), permite entender por qué el código está en su estado actual.
🔧 Mini-ejercicio — Escribe el comando que muestra el historial de forma compacta, con el grafo de las ramas y todas las ramas.
git log --oneline --graph --allQuestion 1: ¿Para qué sirve una rama?
a) Para borrar el historial
b) Para desarrollar de forma aislada sin tocar la versión principal
c) Para conectarse a GitHub
d) Para compilar el código
✅ Respuesta: b) — Una rama es una línea de desarrollo independiente: aísla el trabajo en curso de la rama estable main.
Question 2: ¿Qué comando crea una rama Y cambia a ella?
a) git branch nom
b) git switch -c nom
c) git merge nom
d) git log nom
✅ Respuesta: b) — git switch -c nom crea la rama y se sitúa en ella en un solo comando (equivalente moderno de git checkout -b).
Question 3: Para fusionar feature en main, primero debo…
a) Situarme en feature y luego hacer git merge main
b) Situarme en main y luego hacer git merge feature
c) Borrar main
d) Hacer git init
✅ Respuesta: b) — Te sitúas en la rama de destino (main), luego fusionas la rama origen (feature) dentro.
Question 4: ¿Cuándo aparece un conflicto de fusión?
a) Cuando dos ramas modifican la misma línea del mismo archivo
b) En cada fusión, sistemáticamente
c) Cuando se crea una rama
d) Cuando se instala Git
✅ Respuesta: a) — Git no puede elegir entre dos modificaciones de la misma línea: señala un conflicto a resolver a mano.
Question 5: ¿Qué comando muestra el historial con el grafo de las ramas?
a) git status
b) git log --oneline --graph --all
c) git branch -d
d) git add .
✅ Respuesta: b) — --graph --all dibuja la estructura de las ramas y las fusiones; --oneline la hace compacta.
En un repositorio existente, crea una rama, haz un commit en ella, luego fusiónala en main y consulta el grafo.
# 1. Partir de main al día
git switch main
# 2. Crear y cambiar a una rama de funcionalidad
git switch -c feature-titre
# 3. Trabajar y commitear en la rama
echo "## Nueva sección" >> README.md
git add README.md
git commit -m "Añade una nueva sección al README"
# 4. Volver a main y fusionar
git switch main
git merge feature-titre
# 5. Limpiar la rama fusionada
git branch -d feature-titre
# 6. Visualizar el historial
git log --oneline --graph --allResultado esperado: el commit de la rama aparece en el historial de main, y git branch ya no lista feature-titre.
Este ciclo — crear una rama, trabajar, fusionar, borrar — es el flujo de trabajo diario de un desarrollador. Lo repetirás cientos de veces.
main permanece estable.git switch -c nom crea y cambia a una rama.main), luego git merge origen.git log --oneline --graph --all visualiza la historia y las ramas.Lección 08 — Repositorio remoto: compartir tu trabajo en línea y colaborar vía un servidor Git (GitHub).
Todos los derechos reservados. Toda reproducción, difusión, uso o adaptación de este curso, en todo o en parte, está estrictamente prohibida sin la autorización escrita previa del Dr. Haythem REHOUMA.
Curso creado por Dr. Haythem REHOUMA — Desarrollo y despliegue de soluciones de datos