**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" 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** 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 Deshacer los cambios, quitar archivos del area de preparacion. (antes de commit) git checkout -- nombre_archivo 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 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** 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 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) Sobreescribir repo remoto (el remoto tiene cambios que no me interesan y se pueden sobreescribir con la version de local) git push --force origin main ------------------- **REPOSITORIOS** 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 NUEVA_URL Agregar un nuevo 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** git branch Ver las ramas esistentes 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 --- ###### GITEA BACKUP ###### **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 .` **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`)