01 - Control de versiones con Git

El control de versiones registra los cambios de un proyecto a lo largo del tiempo, permite volver a estados anteriores y trabajar en equipo sin sobrescribir el trabajo de los demás. Git es el sistema de control de versiones más usado.

Concepto Significado
Repositorio Carpeta con el historial completo de versiones del proyecto
Commit Instantánea del proyecto en un momento dado, con su mensaje
Historial Cadena de commits del repositorio
Rama Línea de trabajo independiente dentro del repositorio
Remoto Copia del repositorio en otro servidor, por ejemplo GitHub

Un repositorio Git tiene tres zonas: el directorio de trabajo (los archivos que editas), el staging area (los cambios preparados) y el historial (los commits). Un commit registra lo que hay preparado en el staging area.

git config --global user.name "Nombre"
git config --global user.email "correo@example.com"

El nombre y el correo quedan asociados a cada commit.

Comando Acción
git init Crea un repositorio en la carpeta actual
git clone <url> Descarga un repositorio remoto
git status Muestra el estado de los archivos
git add <archivo> Prepara archivos para el commit (staging)
git commit -m “mensaje” Guarda una versión con su mensaje
git log –oneline Muestra el historial resumido
git diff Muestra los cambios sin preparar

git init
git add .
git commit -m "Initial commit"
git status

Una rama permite trabajar en una funcionalidad sin afectar al código principal. La rama principal suele llamarse main.

git branch feature/login      # crea la rama
git switch feature/login      # cambia a ella
# ... commits ...
git switch main
git merge feature/login       # incorpora los cambios


@startuml
gitbranch
commit id: "A"
commit id: "B"
branch feature
commit id: "C"
commit id: "D"
merge feature
commit id: "E"
@enduml

Un conflicto ocurre cuando dos ramas modifican las mismas líneas y Git no puede decidir cuál conservar. El archivo marcado muestra ambas versiones delimitadas por «««<, ======= y »»»>.

<<<<<<< HEAD
Versión de la rama actual
=======
Versión de la rama que se fusiona
>>>>>>> feature/login

Resolverlo consiste en editar el archivo, dejar la versión correcta y repetir git add con git commit. Fusionar con frecuencia reduce los conflictos.

git remote add origin <url>   # conecta con un remoto
git push -u origin main       # publica la rama
git push                      # publica los últimos commits
git pull                      # descarga e integra los cambios del remoto
git fetch                     # descarga sin integrar

GitHub aloja repositorios y facilita la colaboración:

  • Pull request (PR): propuesta para integrar una rama en otra, con revisión de cambios y comentarios.
  • Fork: copia del repositorio en la cuenta de otra persona, útil para contribuir sin permisos de escritura.

El archivo .gitignore lista patrones que Git debe ignorar: compilados, dependencias, configuración local o secretos.

target/
.idea/
*.log
application-local.properties

Nunca se versionan claves, contraseñas ni datos de acceso.

Commits pequeños y frecuentes con mensajes descriptivos mantienen un historial útil. Un mensaje de commit explica el cambio: “Add validation to registration form” es útil; “cambios” no.
  • clase/daw/ed/1eval/git.txt
  • Última modificación: 2026/10/12 12:43
  • por cesguiro