
Los comandos largos de Git, las extracciones fallidas y las indicaciones de tokens de GitHub duplicadas ralentizan cada implementación realizada a través de SSH. Aquí hay cinco formas de simplificar la configuración de Git, el mantenimiento del repositorio y la autenticación de la CLI de GitHub.
Si gestionas aplicaciones linux Server, es posible que esté extrayendo código a través de SSH varias veces al día. Cada operación solo toma unos segundos, pero la fricción aumenta cuando cada registro de git requiere múltiples indicadores, git pull deja de preguntar cómo conciliar diferentes ramas y GitHub envía mensajes de verificación repetidamente.
La mayoría de estas interrupciones provienen de git y CLI de GitHub El valor predeterminado no coincide con su flujo de trabajo. Algunos cambios de configuración únicos pueden simplificar los comandos comunes, hacer que el comportamiento de extracción sea predecible, mantener el repositorio mantenido y reducir las solicitudes de autenticación repetidas.
Ambos git y CLI de GitHub (gh) La compatibilidad con configuraciones persistentes le permite aplicar estas mejoras sin cambiar los scripts de implementación ni configurar cada comando desde cero.
Cómo git config y gh config almacenan su configuración
Antes de cambiar algo, es útil conocer la ubicación. git Guarde su configuración. Git utiliza tres niveles de configuración, con configuraciones más específicas que cubren configuraciones más amplias:
/etc/gitconfig # --system: every user on the server ~/.gitconfig # --global: your user, every repository /.git/config # --local: one repository only
El siguiente ejemplo usa git config --globalpor lo que estas configuraciones se aplican a todos los repositorios que administra actualmente linux Usuarios, incluido howmint. Las configuraciones específicas del repositorio aún pueden anularlas.
este CLI de GitHub (gh) Guarde sus preferencias en ~/.config/gh/config.yml y su información de certificación ~/.config/gh/hosts.yml.
Estos archivos tienen diferentes propósitos: el archivo de configuración controla el comportamiento de la CLI y el archivo de hosts almacena datos de autenticación para la cuenta de GitHub y el host.
Instale Git y GitHub CLI en Linux
Git ya está instalado en muchas computadoras linux servidor, pero GitHub CLI (gh) Puede perderse. Instale ambos en el servidor de muestra, 192.168.122.248usa tu comando distribución de linux.
existir ubuntu y Durbaninstale el paquete desde el repositorio APT configurado. disponible GH La versión puede ir por detrás de la última versión anterior.
sudo apt update sudo apt install -y git gh
existir LokiLinux, AlmaLinuxy RHEL, git Disponible a través del repositorio estándar, pero la CLI de GitHub puede requerir su repositorio RPM oficial. Agregue un nuevo repositorio e instale gh de la siguiente manera:
sudo dnf install -y git 'dnf-command(config-manager)' sudo dnf config-manager --add-repo sudo dnf install -y gh --repo gh-cli
Verifique la versión instalada antes de continuar:
git --version gh --version
El siguiente ejemplo supone git 2.34 o más reciente, que introduce programas de mantenimiento en segundo plano a través de temporizadores systemd linux. Algunos comandos y opciones pueden comportarse de manera diferente a las versiones anteriores, así que verifique qué versión ha instalado antes de aplicar la configuración.
1. Utilice alias para acortar los comandos diarios de Git
La primera mejora es reducir la escritura repetitiva. Los alias de Git le permiten asignar nombres cortos a los comandos más utilizados y sus opciones, lo que acelera las comprobaciones rutinarias del repositorio.
Configure estos tres alias globalmente:
git config --global alias.st 'status -sb' git config --global alias.lg 'log --oneline --graph --decorate -15' git config --global alias.last 'log -1 --stat'
Esto es lo que hace cada alias:
stAl ejecutar git status -sb se muestra la rama actual y un resumen compacto de los cambios preparados, no preparados y sin seguimiento. Cuando se configura el seguimiento ascendente, también mostrará si una rama precede o sigue a su ascendente.lgMuestra las últimas 15 confirmaciones en un gráfico compacto, con decoraciones como ID de confirmación abreviadas, nombres y etiquetas de ramas y mensajes de confirmación de una sola línea.lastMuestra un resumen de las confirmaciones recientes y los archivos que cambiaron, incluidos los recuentos de inserciones y eliminaciones.
Por ejemplo, ejecute el siguiente comando desde el directorio de la aplicación:
cd /var/www/app git st git lg git last
Ahora puede inspeccionar el árbol de trabajo, verificar el historial reciente y ver las últimas confirmaciones sin tener que ingresar repetidamente opciones de comando largas. Debido a que estos alias usan «-global», están disponibles en todos los repositorios a los que accede el usuario actual de Linux.
2. Utilice pull.ff para evitar confirmaciones de fusión accidentales
El alias ahorra pulsaciones de teclas, pero el problema más dañino es git tirar La implementación se detiene con un error fatal: es necesario especificar cómo coordinar diferentes ramas.
Modern Git muestra este mensaje cuando las ramas local y remota divergen y no se configura ninguna estrategia de extracción.
Al implementar un pago, es posible que desee que Git solo acepte actualizaciones directas y se detenga cuando la rama local contenga confirmaciones que faltan en la remota.
Configure este comportamiento en todo el dominio:
git config --global pull.ff only git config --global fetch.prune true
Estas configuraciones resuelven dos problemas diferentes:
- jalar Solo permita que git pull actualice la rama actual si Git puede avanzar rápidamente. Git abortará si el historial local y remoto divergen
fatal: Not possible to fast-forward, aborting.En lugar de crear una confirmación de fusión. - buscar.podar verdadero Elimine las referencias de seguimiento remoto obsoletas cuando las obtenga. Si se eliminó la rama en GitHub, se eliminarán sus referencias de seguimiento obsoletas y se conservará el siguiente resultado.
git branch -rLimpio.
Si la extracción falla porque Git no puede avanzar rápidamente, verifique el historial reciente antes de cambiar algo:
git lg git status -sb
Si el servidor contiene confirmaciones locales inesperadas, determine si deben enviarse, mantenerse en otra rama o descartarse. No lo reinicie ni lo descarte a ciegas, especialmente en un servidor de producción.
importante: Estas configuraciones son apropiadas cuando su flujo de trabajo de implementación espera que el servidor siga ramas remotas sin realizar confirmaciones locales. No garantizan que la sucursal remota sea la versión exacta que desea implementar; verifique la rama de destino y confirme como parte del proceso de implementación.
Si esto explica por qué git pull Siga fallando durante la implementación; comparta sugerencias con los compañeros de equipo que aún necesitan limpiar confirmaciones de fusión inesperadas en sus servidores de producción.
3. Comience a mantener grandes repositorios funcionando rápidamente con el mantenimiento de git
Los dos primeros consejos aceleran tus comandos, pero este acelera el propio Git. Los repositorios que se extraen con frecuencia recopilan artefactos sueltos y archivos empaquetados, por lo que Git se ralentizará en unos meses y automáticamente git gc Se puede iniciar durante la implementación.
El comando de mantenimiento git mueve esta limpieza a un trabajo en segundo plano programado, por lo que el repositorio se registra desde su directorio:
cd /var/www/app git maintenance start
Esto agregará el repositorio a maintenance.repo En la configuración de todo su dominio, y al establecer temporizadores de usuario systemd por hora, día y semana (o trabajos cron cuando el servicio de usuario systemd no está disponible), puede enumerar estos temporizadores:
systemctl --user list-timers 'git-maintenance@*'
Debería ver los temporizadores git-maintenance@ por hora, día y semana en la lista, y el siguiente tiempo de ejecución variará en su servidor.
Los temporizadores de usuario solo se ejecutan cuando tienes una sesión de inicio de sesión activa, así que habilita un retraso para que tus usuarios mantengan el trabajo en ejecución después de cerrar sesión:
sudo loginctl enable-linger tecmint
4. Utilice gh auth setup-git para detener las solicitudes de token de GitHub
A través de ajustes en el propio Git, el retraso restante proviene de la autenticación de GitHub. GitHub ya no acepta contraseñas de cuentas a través de HTTPS, por lo que cada envío requiere un token de acceso personal, mientras que la CLI de GitHub puede iniciar sesión una vez y entregar ese token a Git cuando sea necesario.
Comience a iniciar sesión desde el servidor:
gh auth login
elegir GitHub.com, HTTPSy Inicie sesión usando un navegador webluego ingresa el código de un solo uso GitHub CLI (gh) Se mostrará un código de dispositivo único y se le pedirá que abra En su propia computadora, ingrese el código y autorice la solicitud.
Este método funciona para servidores Linux sin cabeza porque la autorización basada en navegador se produce localmente.
gh auth setup-git
Puedes comprobar este cambio en la configuración global de Git:
git config --global --get-regexp 'credential.*'
Producción:
credential. credential. !/usr/bin/gh auth git-credential credential. credential. !/usr/bin/gh auth git-credential
Las líneas de ayuda vacías parecen un error, pero son normales porque borran cualquier ayuda de credenciales previamente definida, por lo que Git solo le pide a gh sus credenciales de GitHub.
Si aún publica su token de acceso personal en cada servidor, comparta este contenido con personas que tengan el token almacenado en un archivo de texto en su directorio de inicio.
5. Utilice gh config para configurar los ajustes de la CLI de GitHub
ahora que GitHub CLI (gh) Una vez que haya iniciado sesión, ajústelo de la misma manera que ajustó Git en el primer truco debido a sus problemas interactivos que hacen que los trabajos cron esperen entradas que nunca llegan:
gh config set git_protocol https gh config set prompt disabled gh alias set myprs 'pr list --author "@me"' gh alias set ci 'run list --limit 5'
Esto es lo que hace cada configuración y alias:
git_protocol httpsMantenergh repo cloneen HTTPS, por lo que el clon utiliza el asistente de credenciales del truco anterior.prompt disableddetenerghHaga preguntas interactivas, de modo que los comandos a los que les faltan los indicadores requeridos generen un error en lugar de esperar en el script.myprsEnumera las solicitudes de extracción pendientes que haya establecido en el repositorio actual.ciMuestra las últimas cinco acciones de GitHub ejecutadas para que puedas confirmar la compilación aprobada antes de realizar la ejecución.
Consejo profesional: verifique y asegure su configuración de Git y gh
Una vez que los cinco consejos estén en su lugar, ejecute git config --list --show-origin Siempre que ocurre un comportamiento inesperado, muestra cada configuración activa junto a su archivo fuente.
Para reutilizar esta configuración, copie ~/.gitconfig y ~/.config/gh/config.yml a otros servidores scppero nunca hosts.ymlporque en un servidor sin llavero, gh almacena su token en texto sin formato.
En un servidor compartido, evite usar su cuenta personal de GitHub y use tokens específicos pasados a través de gh auth login --with-tokense limita a repositorios implementados en servidores, por lo que un servidor comprometido expone la menor información posible.
Si la advertencia del token en texto sin formato le sorprende, comparta esta advertencia con su equipo antes de que alguien copie todo el contenido. ~/.config/gh Directorio entre servidores.
en conclusión
Ahora tiene comandos Git más cortos, extracciones que nunca crean confirmaciones de fusión inesperadas, mantenimiento del repositorio en segundo plano e inicios de sesión de GitHub que nunca interrumpen su trabajo. Cada cambio requiere un comando y juntos eliminan gran parte del tiempo de espera para que Git funcione en el servidor.
Para incluir estos comandos en un script de implementación para extraer, verificar CI y reiniciar su servicio, nuestro Curso de secuencias de comandos Bash para principiantes Cubre variables, manejo de errores y código de salida.
Nos encantaría saber cómo configuraste Git en tu servidor. ¿En qué alias confías más? ¿Permite iniciar sesión en servidores compartidos o insiste en implementar claves? No dude en publicar cualquier error en los comentarios.









