329 lines
10 KiB
Markdown
329 lines
10 KiB
Markdown
**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 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://<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`)
|
||
|
||
|
||
|
||
|