Fases en que se puede encontrar un archivo
Cuando tu proyecto está inicializado y bajo control de Git, cada archivo puede encontrarse en uno de varios estados durante su ciclo de vida:
- Untracked (no rastreado): Git detecta que el archivo existe en tu directorio, pero aún no lo controla porque nunca lo has añadido con
git add
. Aparece listado en rojo engit status
. - Modified (modificado): El archivo ha sido editado desde el último commit. Git lo está vigilando porque ya fue añadido previamente al repositorio.
- Staged (preparado): Los cambios han sido marcados para incluirse en el próximo commit mediante
git add
. Están en el llamado "área de preparación" o staging area. - Committed (confirmado): Los cambios han sido guardados en el historial de Git con un
git commit
. A partir de aquà forman parte del repositorio.
En la práctica, muchas guÃas simplifican este flujo a tres estados (modificado → preparado → confirmado), pero el estado "untracked" también es clave al comenzar o al crear archivos nuevos. Git siempre muestra claramente estos estados mediante git status
, para que sepas qué está pendiente, qué está listo y qué ya fue guardado.
Es importante entender que Git no rastrea automáticamente ningún archivo: solo aquellos que tú decidas incluir con git add
.
Clonar un Repositorio Remoto
Si se trata de tu propio proyecto, normalmente inicializarás GIT en una carpeta vacÃa, o si ya tienes en ella algún archivo creado, lo añadirás al repositorio local.
Pero también es posible que quieras trabajar en local sobre un proyecto ya existente en un repositorio remoto (por ejemplo, en GitHub, GitLab o Bitbucket). En ese claso puedes clonarlo a tu máquina local, usando la URL del repositorio (HTTPS o SSH).
git clone <URL_DEL_REPOSITORIO>
o, si tienes configurada la conexión SSH:
git clone git@<servicio>:<usuario>/<repositorio>.git
git clone <URL_DEL_REPOSITORIO>
copia el repositorio remoto completo a una nueva carpeta en tu máquina local usando la URL proporcionada.
git clone git@<servicio>:<usuario>/<repositorio>.git
clona el repositorio remoto utilizando una conexión SSH configurada. La conexión SSH suele ser más segura y evita tener que introducir credenciales repetidamente.
Realizar Commits: Guardar tus Cambios
Una vez que has realizado cambios en tus archivos, necesitas guardarlos en el historial del repositorio mediante commits. Antes de preparar o hacer un commit, es útil ver el estado de tus archivos con git status
. Este comando muestra los archivos modificados, los que están en el área de staging y los archivos nuevos que Git aún no rastrea. Es un comando fundamental para entender el estado de tu repositorio local.
Preparar los Cambios para el Commit (Staging)
Antes de hacer un commit, debes indicar a Git qué cambios quieres incluir en ese commit. Esto se hace con el comando git add
.
git add <nombre_del_archivo>
git add <nombre_del_archivo>
: Añade el archivo especificado al área de staging. Puedes usar comodines para añadir varios archivos a la vez:
git add . # Añade todos los cambios en el directorio actual y subdirectorios
git add *.txt # Añade todos los archivos con extensión .txt
Confirmar los cambios con un Commit
Una vez que los cambios deseados están en el área de staging, puedes crear un commit para guardarlos en el historial.
git commit -m "Mensaje descriptivo del commit"
git commit -m "Mensaje descriptivo del commit"
crea un nuevo commit con el mensaje que describe los cambios realizados. Es crucial escribir mensajes de commit claros y concisos, que permitan conocer de modo sumario los cambios que se incorporan
Volver a una Versión Anterior
Git te permite retroceder en el tiempo a commits anteriores. Hay varias formas de hacerlo, y la elección depende de si quieres simplemente ver una versión anterior o deshacer cambios permanentemente.
Ver un Commit Anterior
Para ver los detalles de un commit especÃfico (autor, fecha, mensaje, cambios), puedes usar el hash del commit:
git show <hash_del_commit>
Puedes encontrar el hash de los commits con el comando git log
Volver a un Estado Anterior (Sin Perder el Historial)
El comando git checkout
te permite mover tu rama HEAD a un commit especÃfico. Esto te permite ver el estado de tu proyecto en ese momento sin modificar el historial. Es importante tener cuidado con este comando si tienes cambios sin confirmar, ya que podrÃan perderse.
git checkout <hash_del_commit>
# Para volver a tu rama de trabajo principal (por ejemplo, main o master):
git checkout <nombre_de_la_rama>
Crear un Nuevo Commit Deshaciendo Cambios (Revertir)
El comando git revert
crea un nuevo commit que deshace los cambios introducidos por un commit anterior especÃfico. Esta es la forma más segura de "volver atrás" ya que preserva el historial
git revert <hash_del_commit>
Esto abrirá un editor para que escribas un mensaje para el commit de reversión.
Deshacer Commits (Modificando el Historial - ¡Precaución!)
El comando git reset permite deshacer commits, y tiene diferentes modos que afectan el historial de diferentes maneras. Usar git reset --hard
puede eliminar commits y cambios permanentemente, por lo que se debe usar con extrema precaución, especialmente si ya has compartido tu repositorio remoto.
git reset ‐‐soft <hash_del_commit> # Mantiene los cambios como staged
git reset ‐‐mixed <hash_del_commit> # (Por defecto) Mantiene los cambios sin stagear
git reset ‐‐hard <hash_del_commit> # ¡Elimina los cambios y el commit!
Obtener Cambios desde un Repositorio Remoto (Pull)
Si tu proyecto tiene una contraparte remota, y quieres obtener los cambios que puedan haberse realizado en ese repositorio remoto, utilizas el comando git pull
git pull origin <nombre_de_la_rama>
# descarga los cambios de la rama especificada (generalmente main o master) del repositorio
# remoto llamado origin y los integra en tu rama local actual.
Eliminar archivos en Git: ¿borrado real o solo dejar de seguirlos?
1. Eliminar completamente el archivo (local y remoto)
Si ya no necesitas el archivo, puedes borrarlo y hacer commit del borrado. Esto lo elimina tanto de tu máquina como del historial activo del repositorio:
# Borra el archivo fÃsicamente
rm archivo.txt
# Informa a Git del cambio
git rm archivo.txt
# Confirma el cambio
git commit -m "Eliminar archivo.txt"
# Sube los cambios al remoto
git push origin main
Nota: Si borras el archivo con el explorador o editor, y luego haces git add -A
o git commit -a
, Git interpreta correctamente que ese archivo fue eliminado y lo incluye en el commit.
Si prefieres tenerlo más explÃcito y controlado, git rm archivo.txt
lo borra y lo marca automáticamente para commit en un solo paso.
Resultado: el archivo desaparece de tu disco y del repositorio remoto. ATENCIÓN: aún se conserva en el historial anterior y puede recuperarse desde un commit anterior !!.
2. Dejar de rastrear un archivo pero mantenerlo en disco
Si el archivo sigue siendo útil localmente (por ejemplo: configuraciones, claves, datos temporales), puedes hacer que Git lo ignore sin borrarlo de tu carpeta:
# Deja de rastrearlo, pero no lo elimina de tu disco
git rm --cached archivo.txt
# Actualiza tu .gitignore para evitar que vuelva a rastrearse
echo "archivo.txt" >> .gitignore
# Confirma los cambios
git commit -m "Dejar de rastrear archivo.txt"
git push origin main
Resultado: el archivo se mantiene en tu máquina, pero desaparece del repositorio (y no se volverá a subir, si está en .gitignore
).
Consejo adicional
Antes de hacer git rm
, puedes ver qué va a pasar con:
git status
Y si te arrepientes después de eliminar un archivo y aún no has hecho commit:
git restore archivo.txt