ConceptoBloque 3 · Ramas y conflictos
Una rama para cada cambio
Explicación
En el Bloque 1 vimos que una rama es una etiqueta que apunta al último commit y que HEAD indica dónde estás parado. Ahora vas a tener varias.
Una rama sirve para trabajar en algo sin tocar main.
Es como un libro de “Elige tu propia aventura”: desde la misma página la historia se divide en dos caminos, y cada uno avanza por su cuenta. Cada rama es el separador que marca hasta dónde va su camino, y HEAD es el separador del camino que estás leyendo.
| Comando | Qué hace |
|---|---|
git branch |
Lista las ramas y marca con * donde estás |
git branch nombre |
Crea una rama en el commit actual, pero no te mueve |
git switch nombre |
Te cambia a esa rama y actualiza los archivos |
git switch -c nombre |
Crea la rama y te cambia a ella (el más usado) |
git switch - |
Regresa a la rama anterior |
- Los nombres van sin espacios, por ejemplo
agrega-contacto. - Al hacer commit solo avanza la rama donde estás.
- Los cambios sin commit no pertenecen a ninguna rama: viajan contigo. Si chocan con la rama destino, Git se niega a cambiar y te pide hacer commit o stash (el siguiente tema).
¿Y git checkout?
Antes, checkout hacía dos trabajos: cambiar de rama y restaurar archivos. En 2019 Git los separó en switch y restore.
git checkout nombre=git switch nombregit checkout -b nombre=git switch -c nombre
Riesgo:
git checkout archivo(sin nombre de rama) no cambia de rama: tira los cambios sin commit de ese archivo, igual quegit restore.