Guía Práctica de Comandos de Git para Desarrollo de Software

En Git, el flujo de trabajo se divide en cuatro áreas principales: el directorio de trabajo (donde se editan los archivos), el área de staging o índice (donde se preparan los cambios para confirmar), el repositorio local (donde se almcaenan las confirmaciones) y el repositorio remoto (donde se comparten los cambios).

Configuración Inicial de Git:

git config --global --list  # Muestra la configuración global
git config --global --edit  # Edita la configuración global de forma interactiva
git config --global --unset [expresión-regular]  # Elimina una configuración global específica

git config --global user.nombre "tu_nombre"  # Establece el nombre de usuario global
git config --global user.correo "tu_correo@ejemplo.com"  # Define la dirección de correo electrónico global
git config --global https.proxy "servidor_proxy"  # Configura un proxy para conexiones HTTPS
git config --global http.proxy "servidor_proxy"  # Configura un proxy para conexiones HTTP

git config --list  # Lista toda la configuración actual
git config --list --show-origin  # Muestra la configuración con su origen
git config --local --list  # Muestra la configuración local del repositorio (ejecutar dentro del directorio del repositorio)

Nota: El parámetro --global aplica la configuración a todos los repositorios en el sistema, miantras que --local permite ajustar configuraciones específicas para un repositorio individual.

Uso de Alias para Simplificar Comandos:

git config --global alias.<nombre-alias> "<comando-git>"  # Define un alias
git <nombre-alias> [argumentos-opcionales]  # Ejecuta el alias definido
</nombre-alias></comando-git></nombre-alias>

Gestión de Repositorios Locales:

git init <nombre-carpeta>  # Crea un nuevo repositorio Git en la carpeta especificada
git remote add <nombre-rama-remota> <url-repositorio-remoto>  # Vincula el repositorio local con uno remoto
git remote -v  # Muestra detalles del repositorio remoto, incluyendo URLs de acceso
git pull <nombre-rama-remota>  # Descarga y fusiona los cambios del repositorio remoto

git clone <url-repositorio-remoto>  # Clona un repositorio remoto al directorio actual
</url-repositorio-remoto></nombre-rama-remota></url-repositorio-remoto></nombre-rama-remota></nombre-carpeta>

Preparación de Cambios para Confirmación:

git add <archivo>  # Añade un archivo específico al área de staging
git add .    # Añade todos los archivos modificados al área de staging
git add --all    # Añade todos los cambios, incluyendo eliminaciones, al área de staging

git rm <archivo>  # Elimina un archivo y registra la eliminación en el área de staging
git mv <nombre-actual> <nuevo-nombre>  # Renombra un archivo y actualiza el área de staging
</nuevo-nombre></nombre-actual></archivo></archivo>

Inspección del Estado y Diferencias:

git status  # Muestra el estado actual, con cambios no rastreados en rojo y cambios preparados en verde
git diff  # Muestra las diferencias entre el directorio de trabajo y el área de staging
git diff <archivo> # Muestra las diferencias de un archivo específico en el directorio de trabajo
git diff HEAD -- <archivo>  # Compara el directorio de trabajo con la última confirmación del repositorio
</archivo></archivo>

Deshacer Modificaciones no Confirmadas:

git clean -f  # Elimina archivos no rastreados del directorio de trabajo
git clean -df  # Elimina directorios y archivos no rastreados
git clean -ndf  # Realiza una simulación (dry-run) para previsualizar qué se eliminaría

git checkout -- .  # Revierte todos los cambios en el directorio de trabajo (solo archivos rastreados)
git checkout -- <archivo>  # Revierte los cambios de un archivo específico en el directorio de trabajo

git reset .  # Mueve todos los cambios del área de staging al directorio de trabajo
git reset <nombre-archivo>  # Mueve un archivo específico del área de staging al directorio de trabajo

git reset --hard  # Restaura el directorio de trabajo y el área de staging al estado de la última confirmación, descartando todos los cambios locales
</nombre-archivo></archivo>

Confirmación de Cambios en el Repositorio:

git commit -m "<mensaje>"  # Crea una confirmación con un mensaje descriptivo
git commit <archivo> -m "<mensaje>"  # Confirma los cambios de un archivo específico
git commit --amend -m "<nuevo-mensaje>"  # Modifica el mensaje de la última confirmación (no usar si ya se ha enviado al remoto)
git commit --amend  # Añade cambios adicionales a la última confirmación
git rebase -i  # Permite combinar múltiples confirmaciones locales de forma interactiva
</nuevo-mensaje></mensaje></archivo></mensaje>

Historial de Confirmaciones y Comandos:

git log  # Muestra el registro completo de confirmaciones
git log -<n>  # Muestra las últimas N confirmaciones
git log --oneline  # Muestra el historial en formato conciso, una línea por confirmación
git log --oneline --graph  # Visualiza el historial con un gráfico de ramas y fusiones

git reflog  # Muestra el historial de operaciones realizadas en el repositorio
git reflog -<n>  # Muestra las últimas N operaciones
</n></n>

Retroceso a Versiones Anteriores:

git log --oneline -<n>  # Identifica el ID de confirmación para retroceder
git reflog  # Identifica el punto en el historial para avanzar hacia el futuro

git reset --hard <id-confirmaci>  # Retrocede el repositorio a una versión específica, descartando todos los cambios locales
git reset --keep <id-confirmaci>  # Retrocede a una versión, pero conserva los cambios no confirmados en el directorio de trabajo

git reset --keep HEAD^  # Retrocede a la confirmación anterior; HEAD~N para retroceder N confirmaciones
</id-confirmaci></id-confirmaci></n>

Operaciones con Repositorios Remotos:

git clone <url-repositorio-remoto>  # Clona un repositorio remoto

git fetch  # Descarga nuevas ramas y etiquetas del repositorio remoto (sin eliminar ramas remotas eliminadas)
git fetch --prune  # Sincroniza la eliminación de ramas remotas en el repositorio local

git pull  # Descarga y fusiona los cambios del repositorio remoto (equivalente a git fetch seguido de git merge)
git pull --rebase <repositorio-remoto>  # Descarga los cambios y los aplica mediante rebase, integrando modificaciones sobre la base de trabajo de otros

git push -u origin <nombre-rama>  # Envía una nueva rama local al repositorio remoto y establece la conexión para futuros envíos
git push origin <nombre-rama>  # Envía los cambios locales de una rama al repositorio remoto
git push --set-upstream origin <nombre-rama>  # Configura el seguimiento entre una rama local y una remota

git remote  # Lista los repositorios remotos configurados
git remote -v  # Muestra URLs de los repositorios remotos, incluyendo permisos de acceso
</nombre-rama></nombre-rama></nombre-rama></repositorio-remoto></url-repositorio-remoto>

Administración de Ramas:

Las estrategias de ramificación definen cómo crear, fusionar y eliminar ramas según el flujo de trabajo del proyecto. Antes de crear una rama, verifique el estado con git status. Al fusionar, considere usar el modo fast-forward o deshabilitarlo para mantener un historial claro.

git branch  # Lista las ramas locales, con un asterisco en la rama activa
git branch -a  # Muestra todas las ramas, tanto locales como remotas
git branch -r # Lista solo las ramas remotas
git branch <nombre-rama>  # Crea una nueva rama
git checkout <nombre-rama>  # Cambia a una rama existente
git checkout -b <nombre-rama>  # Crea y cambia a una nueva rama
git checkout -b <rama> <etiqueta>  # Crea una rama basada en una etiqueta específica

git cherry-pick <id-confirmaci>  # Aplica una confirmación específica a la rama actual

git merge <nombre-rama>  # Fusiona la rama especificada en la rama actual
git merge --no-ff -m "<comentarios>" <nombre-rama>  # Fusiona una rama sin fast-forward, creando una confirmación de fusión explícita

git branch -d <nombre-rama>  # Elimina una rama local si ya está fusionada
git branch -D <nombre-rama>  # Elimina forzosamente una rama local, incluso si no está fusionada
git push origin --delete <nombre-rama-remota>  # Elimina una rama del repositorio remoto

git log --oneline --graph  # Visualiza el historial de fusiones con un gráfico
</nombre-rama-remota></nombre-rama></nombre-rama></nombre-rama></comentarios></nombre-rama></id-confirmaci></etiqueta></rama></nombre-rama></nombre-rama></nombre-rama>

Gestión de Etiquetas (Tags):

git tag  # Lista todas las etiquetas locales
git ls-remote --tags  # Muestra las etiquetas en el repositorio remoto
git show <etiqueta>  # Muestra detalles de una etiqueta específica

git checkout <etiqueta>  # Cambia al estado de una etiqueta

git tag <etiqueta>  # Crea una etiqueta en la confirmación actual
git tag -a <etiqueta> -m "<comentarios>"  # Crea una etiqueta anotada con un mensaje
git tag -a <etiqueta> <id-confirmaci> -m "<comentarios>"  # Crea una etiqueta en una confirmación específica

git tag -d <etiqueta>  # Elimina una etiqueta local
git push origin :refs/tags/<etiqueta>  # Elimina una etiqueta del repositorio remoto

git push origin --tags  # Envía todas las etiquetas al repositorio remoto
git push origin <etiqueta>  # Envía una etiqueta específica al repositorio remoto
</etiqueta></etiqueta></etiqueta></comentarios></id-confirmaci></etiqueta></comentarios></etiqueta></etiqueta></etiqueta></etiqueta>

Simulación de Comandos (Dry Run):

git clean -n/--dry-run  # Previsualiza archivos que serían eliminados
git add -n/--dry-run  # Previsualiza archivos que serían añadidos al área de staging
git rm -n/--dry-run  # Previsualiza archivos que serían eliminados del seguimiento

# Simular una fusión:
git merge --no-commit --no-ff <rama>
git diff --cached  # Revisar los cambios que se aplicarían
git merge --abort  # Cancelar la fusión simulada
</rama>

Recursos de Ayuda y Aprendizaje:

  • Acceder a la guía de ayuda: git help --guide
  • Listar comandos disponibles y conceptos: git help -a o git help -g
  • Visualizar el tutorial general en el navegador: git help git
  • Consultar ayuda para un comando o concepto específico: git help <comando></comando> o git help <concepto></concepto>

Etiquetas: Git control-versiones comandos-shell administración-repositorios desarrollo-software

Publicado el 6-14 16:56