**AYUDA GIT** ============= **https://git-scm.com/** ------------------- **CONFIGURAR GIT. CONFIGURACION LOCAL** git config --global user.name "Tu Nombre" git config --global user.email "tuemail@example.com" | Comando | Acción | |:------------------------- |:----------------------------------------------| | git config --global init.defaultBranch main|Establecer main como rama por defecto en configuracion global | git config --global --list|muestra datos configuracion global del repositorio | | git config --list | Muestra datos configuración global (usuario, email, etc.) | | git config --global core.autocrlf true |Uso en windows | | git config --global core.autocrlf input | Uso en Mac/Linux | ------------------- **CREAR REPOSITORIO EN GITHUB** Inicia sesión en tu cuenta de GitHub. Haz clic en el botón "New" en la esquina superior derecha. Asigna un nombre a tu repositorio, elige la visibilidad (público o privado) y haz clic en "Create repository". cd ruta/de/tu/carpeta GitHub, por defecto, crea repositorios con la rama main ------------------- **COMANDO GIT BASICOS** | Comando | Acción | |:------------------------- |:----------------------------------------------| | Git init | Inicia un repositorio, crea una carpeta. oculta .git donde Git almacenará los cambios. | | git add . | Agrega los archivos al área de preparación (staging):| | git add nombre-del-archivo | agregar uno específico | | git commit -m "mensanje descriptivo" | Guardar los cambios, registra los cambios en el historial de Git |  | git commit -am "mensaje" | Agrega archivos modificados y hace el commit (no para archivos nuevos) | | git add . && git commit -m "mensaje"| Agrega archivo nuevos y hace commit| | git log | Ver el Historial de Cambios, lista de commits| | git log --oneline --graph --all| resumen compacto| | git reset nombre_archivo / git checkout -- nombre_archivo| Deshacer los cambios, quitar archivos del area de preparacion. (antes de commit)| | git reset --soft HEAD~1| Deshacer el último commit| | git reset --hard HEAD~1 | Eliminar completamente el último commit| | git rm archivo| Eliminar del stage| | git count-objects -vH | Saber cuanto pesa el historial|  | git mv | Cambiar nombre del stage| | .gitignore |Ignorar archivos para seguimiento de Git| Crear archivo .gitignore / editar archivos a ignorar git add .gitignore / git commit -m "commit git ignore" ------------------- **PULL / PUSH** | Comando | Acción | |:------------------------- |:----------------------------------------------| | Git init | Inicia un repositorio, crea una carpeta. | | git push -u origin main| Subir los archivos a repositorio remoto (GitHub, gitlab, etc, confirmar que se esta en la rama en git)| | git push -u origin master| subir archivos si la rama local se llama master| | git push -u origin master:main| Sube a remoto a la rama main el repositorio local de rama master | | git push --force origin main | Sobreescribe el remoto, enviando los cambios del local cuando dice que el remoto no coincide.| | git status status-s | Ver el Estado del Repositorio / -s info resumida | | git pull origin main --rebase| Sincroniza el local con el remoto (cambios en remoto que no hay que perder)| | git push --force origin main | Sobreescribir repo remoto (el remoto tiene cambios que no me interesan y se pueden sobreescribir con la version de local)| ------------------- **REPOSITORIOS** | Comando | Acción | |:------------------------- |:----------------------------------------------| | git remote add origin NUEVA_URL | Agregar un nuevo remoto | | git remote -v | Ver el remoto actual| | git remote set-url origin NUEVA_URL | Cambiar el remoto| | git remote remove origin | Eliminar el remoto|  | git remote add origin https://github.com/tu-usuario/tu-repositorio.git |  Conectar el repositorio local con GitHub git remote add origin URL_DEL_REPO Añadir repositorio remoto (github, gitlab, etc...)|  | git pull origin main| Obtener Cambios del Repositorio Remoto (actualizar el codigo)|  | git pull --rebase origin main| Trae cambios (archivos) del remoto sin afectar al local. Despues add y commit.|  | git clone URL_DEL_REPO| Clonar un Repositorio|  ------------------- **RAMAS** | Comando | Acción | |:------------------------- |:----------------------------------------------| | git branch | Agregar un nuevo remoto | | git branch -a | Ver todas las ramas, incluyendo las remotas| | git branch nueva-rama|Crear una nueva rama (no te situa en la rama creada)| | git checkout nueva-rama|Cambiar a una rama | | git switch nueva-rama|Cambiar a una rama (nuevo sistema recomendado) | | git checkout -b nueva-rama|Crear rama y cambiar a ella automaticamente|  | git switch -c nueva-rama|Crear rama e ir a ella, nuevo comando | | git merge rama|Fusionar rama, integrar cambios (previamente situarse en la rama main/master) Si hay conflictos, Git te pedirá que los resuelvas manualmente antes de confirmar la fusión. | | git branch -d nueva-rama|Eliminar una rama local (usa -D si la rama no ha sido fusionada y quieres forzar su eliminación). | |git push origin --delete rama |Eliminar una rama remota:| |git fetch|Trae rama a tu repositorio local git checkout nombre-de-la-rama| |git pull origin nombre-de-la-rama |Trae rama a tu repositorio local con un solo comando| |git branch -m master main |cambiar nombre de rama (cambia nombre rama master a main, para GitHub) | |git branch -d nombre-de-la-rama|Eliminar una rama localmente | |git branch -m master main |Renombrar rama máster a main | ------------------- **Resumen** Usa ramas para desarrollar nuevas funciones sin afectar main. Cambia entre ramas con git switch o git checkout. Fusiona cambios con git merge. Borra ramas innecesarias con git branch -d. Sube ramas con git push -u origin rama. ------------------- **GITHUB TOKEN** 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 clonar un repositorio privado utilizando el toquen git clone https://@github.com/codibytex/python_scripts.git ejemplo practico con el token generado: git clone https://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@github.com/codibytex/python_scripts.git https://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@github.com/codibytex/detenpol.git echo "# fusionar_comprimir_pdf" >> README.md git init git add README.md git commit -m "first commit" git branch -M main git remote add origin https://github.com/codibytex/fusionar_comprimir_pdf.git git push -u origin main --- **AYUDA GITEA** ============= **Gitea en docker** **backup** docker exec -it gitea bash gitea dump Esto generará un archivo tipo: `gitea-dump-YYYY-MM-DD.zip` Normalmente se guarda en: `/data` Copia el backup al host `docker cp gitea:/data/gitea-dump-YYYY-MM-DD.zip .` Version 2 (funciona) Borrar backup anterior dentro de gitea docker exec -u 1000:1000 gitea rm -f /data/git/gitea-backup.zip Comprueba: docker exec gitea ls -lh /data/git/gitea-backup.zip Debería responder que no existe. Ahora nuevo backup: docker exec -u 1000:1000 gitea \ gitea dump --file /data/git/gitea-backup.zip Comprueba que se ha generado: docker exec gitea ls -lh /data/git/gitea-backup.zip Copiar el backup al host: docker cp gitea:/data/git/gitea-backup.zip ./gitea-backup.zip Comprueba cuántos repositorios tiene realmente el dump unzip -l gitea-backup.zip | grep '\.git/' Extraer el zip en una carpeta unzip gitea-backup.zip -d nombrecarpeta En un gitea dump, los repositorios normalmente están dentro del ZIP bajo una estructura parecida a: gitea-dump-2026-08-04.zip ├── app.ini ├── custom/ ├── data/ ├── log/ ├── repos/ │ ├── usuario1/ │ │ ├── repo1.git/ │ │ └── repo2.git/ │ └── usuario2/ │ └── proyecto.git/ └── ... Si el repositorio estaba, por ejemplo, en: repos/pepe/web.git/ haz: git clone repos/pepe/web.git web script sh #!/bin/bash BACKUP="gitea-backup-$(date +%Y-%m-%d).zip" docker exec -u 1000:1000 gitea \ gitea dump --file "/data/git/$BACKUP" docker cp "gitea:/data/git/$BACKUP" "./$BACKUP" **Restore** 1️⃣ Copia el dump al contenedor (si no está ya dentro) Si el ZIP está en el host: docker cp gitea-dump-YYYY-MM-DD.zip gitea:/data/ 2️⃣ Detén el contenedor de Gitea docker stop gitea ⚠️ Importante: no restaures con Gitea corriendo. 3️⃣ Entra al contenedor docker exec -it gitea bash 4️⃣ Ejecuta la restauración gitea restore --file /data/gitea-dump-YYYY-MM-DD.zip Esto: - Restaura repositorios - Restaura base de datos - Restaura configuración - Restaura issues, PRs, usuarios, etc. 5️⃣ Sal y arranca el contenedor exit docker start gitea **Gitea en volumen docker.** Copiar directamente los volúmenes (rápida y eficaz) Si usas `docker-compose`, normalmente tienes algo así: `volumes: - ./gitea:/data` `docker compose down` tar czvf gitea_backup.tar.gz gitea/` `docker compose up -d` ###### Copiar solo los repositorios (NO recomendado como único backup) Los repositorios están en: `/data/git/repositories` Puedes copiarlos así: `docker cp gitea:/data/git/repositories ./repos_backup` --- **Gitea snap** **backup** sudo gitea dump Esto genera un archivo como: gitea-dump-YYYY-MM-DD.zip Por defecto se guarda en: /var/snap/gitea/common **Restaurar** 1️⃣ Detén Gitea: sudo snap stop gitea 2️⃣ Restaura: sudo gitea restore --file gitea-dump-YYYY-MM-DD.zip 3️⃣ Arranca Gitea: sudo snap start gitea Backup automático con cron (recomendado) Snap Ejemplo de **backup diario a las 2:00 AM**: `sudo crontab -e` Añade: `0 2 * * * gitea dump --file /var/backups/gitea/gitea-$(date +\%F).zip` (asegúrate de crear antes la carpeta `/var/backups/gitea`)