Files
guias_informatica/Guia_git_gitea.md
T

348 lines
10 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
**AYUDA GIT**
=============
**https://git-scm.com/**
-------------------
**CONFIGURAR GIT. CONFIGURACION LOCAL**
```bash
git config --global user.name "Tu Nombre"
git config --global user.email "[email protected]"
```
| 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 rm --cached archivo.txt | quitar archivo del indice para evitar seguimiento por git |
| 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.
-------------------
**.gitignore**
```bash
# Archivo concreto
.env
# Todos los archivos .log
*.log
# Carpeta completa
node_modules/
# Carpeta de compilación
dist/
# Archivos temporales
*.tmp
```
**GITHUB TOKEN**
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
clonar un repositorio privado utilizando el toquen
git clone https://<TOKEN>@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`)