Git: del archivo editado al historial compartido

  • desarrollo

Git es un sistema de control de versiones distribuido. Cada repositorio local conserva objetos y referencias para reconstruir versiones, comparar cambios y desarrollar líneas de trabajo paralelas. GitHub es un servicio que puede alojar una copia remota; Git funciona también sin él y sin conexión a Internet.

Para comenzar en una carpeta nueva, git init crea el repositorio; no confirma automáticamente sus archivos. Un remoto suele llamarse origin por convención y conecta la historia local con un alojamiento externo.

Tres lugares, tres estados

El directorio de trabajo contiene los archivos que editas. El índice o staging area representa el contenido seleccionado para el próximo commit. El repositorio conserva los commits creados. Un commit registra una instantánea del contenido preparado, metadatos y referencias a sus padres. Preparar un archivo no lo publica ni lo convierte todavía en un commit.

Si corriges un formulario y cambias el color del encabezado, puedes preparar solamente el formulario y guardar un commit dedicado a esa corrección. Si vuelves a modificarlo después de git add, el índice mantiene la versión previamente preparada hasta que lo actualices otra vez.

El índice permite construir una instantánea deliberada antes de crear el commit. Publicar es un paso posterior.
El índice permite construir una instantánea deliberada antes de crear el commit. Publicar es un paso posterior.

Un flujo verificable

Shell · ejemplo con remoto configurado
git status
git diff
git add formulario.js
git diff --staged
git commit -m "Corrige la validación del formulario"
git push origin main

git diff revisa cambios sin preparar; git diff --staged muestra lo que entrará al commit. git push intenta actualizar referencias del remoto y transferir los objetos necesarios. Puede ser rechazado si la rama remota avanzó o si una política exige revisión.

Ramas e integración

Una rama es una referencia móvil a un commit. git switch -c nueva-funcion crea una rama y cambia a ella. Integrar con git merge reúne historias: a veces basta con adelantar la referencia; otras veces se crea un commit de fusión. Si hay cambios incompatibles, debes resolver los conflictos, revisar el resultado y completar la integración.

git clone crea una copia local de un repositorio existente. git fetch descarga objetos y actualiza referencias de seguimiento remoto sin integrar cambios en tu rama actual. git pull combina descarga e integración, mediante merge o rebase según sus opciones y configuración.

Consultar y deshacer

git log muestra la historia. git restore recupera contenido y puede descartar cambios sin confirmar; git revert crea un commit que invierte cambios previos conservando la historia compartida. git reset puede mover una rama y, según el modo, modificar también el índice o el directorio de trabajo. No son intercambiables: hay que identificar qué estado se quiere conservar.

Conviene organizar commits por intención y revisar el índice antes de confirmar. La secuencia editar, preparar, confirmar y publicar sirve como base, pero colaborar también exige comprender qué historia se integra. La documentación de Git explica este modelo de instantáneas y los tres estados.

Referencias