Compare commits
4 Commits
f0ba71ff05
...
0f767a4d41
Author | SHA1 | Date | |
---|---|---|---|
0f767a4d41 | |||
056047da79 | |||
b6dc9fc4cb | |||
76d0a2947c |
81
README.md
81
README.md
@ -1,2 +1,83 @@
|
||||
<<<<<<< HEAD
|
||||
# 🚀 Comando `git subir`
|
||||
|
||||
Este script automatiza el proceso de subir cambios a un repositorio Gitea, manejando credenciales, commits, conflictos y merges de forma inteligente. Se instala como un comando global llamado `git subir`, que podés usar desde cualquier repositorio Git.
|
||||
|
||||
---
|
||||
|
||||
## 🧩 Funcionalidades
|
||||
|
||||
- ✅ Verifica que estés dentro de un repositorio Git.
|
||||
- 🔐 Solicita usuario y contraseña/token de Gitea.
|
||||
- 📦 Detecta cambios sin commitear y ofrece hacer commit automático.
|
||||
- 🔄 Maneja conflictos entre el repositorio local y remoto.
|
||||
- 🔀 Realiza merge automático si hay conflictos.
|
||||
- 🧠 Reintenta el `push` después de resolver conflictos.
|
||||
- 🛠️ Se instala globalmente como comando `git subir`.
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Instalación
|
||||
|
||||
### 1. Guardá el instalador
|
||||
|
||||
Copiá el script de instalación en un archivo llamado `instalar-subir.sh`.
|
||||
|
||||
### 2. Asigná permisos y ejecutalo
|
||||
|
||||
```bash
|
||||
chmod +x instalar-subir.sh
|
||||
./instalar-subir.sh
|
||||
|
||||
Esto hará lo siguiente:
|
||||
📁 Crea la carpeta ~/.scripts si no existe.
|
||||
|
||||
📄 Copia el script funcional como git-subir dentro de esa carpeta.
|
||||
|
||||
🔓 Le da permisos de ejecución.
|
||||
|
||||
🛣️ Agrega ~/.scripts al PATH si no está.
|
||||
|
||||
Uso:
|
||||
Desde cualquier repositorio Git, simplemente ejecutá:
|
||||
|
||||
bash
|
||||
git subir
|
||||
|
||||
El script te guiará paso a paso:
|
||||
|
||||
🔐 Te pedirá tus credenciales de Gitea.
|
||||
|
||||
📦 Detectará si hay cambios sin commitear y te ofrecerá hacer commit.
|
||||
|
||||
🚀 Intentará hacer push al repositorio remoto.
|
||||
|
||||
🔄 Si el push falla por historial diferente, hará pull con --allow-unrelated-histories.
|
||||
|
||||
⚔️ Si hay conflictos, te mostrará los archivos afectados y te preguntará si querés hacer un merge automático.
|
||||
|
||||
✅ Reintentará el push después de resolver conflictos.
|
||||
Requisitos
|
||||
Tener Git instalado.
|
||||
|
||||
Tener acceso a un repositorio remoto en Gitea.
|
||||
|
||||
Estar dentro de un repositorio Git local al ejecutar el comando.
|
||||
|
||||
🧼 Desinstalación
|
||||
Si querés eliminar el comando:
|
||||
|
||||
bash
|
||||
rm ~/.scripts/git-subir
|
||||
Y si querés quitar la carpeta del PATH, podés editar tu ~/.bashrc o ~/.zshrc y eliminar la línea:
|
||||
|
||||
bash
|
||||
|
||||
export PATH="$HOME/.scripts:$PATH"
|
||||
|
||||
📬 Autor
|
||||
Este script fue creado por Nahuel Baglietto para automatizar flujos de trabajo con Gitea. ¿Tenés sugerencias o querés mejorarlo? ¡Contribuciones bienvenidas!
|
||||
=======
|
||||
# git-operaciones
|
||||
|
||||
>>>>>>> f0ba71ff0559f7673229e8b14ba5848b8c530500
|
||||
|
100
instalar-subir.sh
Executable file
100
instalar-subir.sh
Executable file
@ -0,0 +1,100 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ╔════════════════════════════════════════════════════╗
|
||||
# ║ VERIFICACIÓN DE REPOSITORIO GIT ║
|
||||
# ╚════════════════════════════════════════════════════╝
|
||||
|
||||
if ! git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
|
||||
echo ""
|
||||
echo "🛑 Este comando debe ejecutarse dentro de un repositorio Git."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BRANCH="main"
|
||||
|
||||
# ╔════════════════════════════════════════════════════╗
|
||||
# ║ INGRESO DE CREDENCIALES ║
|
||||
# ╚════════════════════════════════════════════════════╝
|
||||
|
||||
echo ""
|
||||
echo "🔐 Ingresá tu usuario de Gitea:"
|
||||
echo "╔════════════════╗"
|
||||
read -p "║ Usuario: " USER
|
||||
echo "╚════════════════╝"
|
||||
|
||||
echo ""
|
||||
echo "🔐 Ingresá tu contraseña o token de Gitea:"
|
||||
echo "╔════════════════════════════════╗"
|
||||
read -s -p "║ Contraseña/Token: " TOKEN
|
||||
echo ""
|
||||
echo "╚════════════════════════════════╝"
|
||||
|
||||
# ╔════════════════════════════════════════════════════╗
|
||||
# ║ DETECCIÓN DE CAMBIOS SIN COMMITEAR ║
|
||||
# ╚════════════════════════════════════════════════════╝
|
||||
|
||||
CHANGES=$(git status --porcelain)
|
||||
|
||||
if [ -n "$CHANGES" ]; then
|
||||
echo ""
|
||||
echo "📦 Se detectaron cambios sin commitear:"
|
||||
echo "$CHANGES"
|
||||
read -p "¿Querés hacer commit automático de estos cambios? (s/n): " COMMIT_RESP
|
||||
|
||||
if [ "$COMMIT_RESP" == "s" ]; then
|
||||
echo ""
|
||||
read -p "📝 Ingresá el mensaje de commit: " COMMIT_MSG
|
||||
git add .
|
||||
git commit -m "$COMMIT_MSG"
|
||||
echo "✅ Commit realizado."
|
||||
else
|
||||
echo "🛑 No se hizo commit. Continuando sin cambios."
|
||||
fi
|
||||
fi
|
||||
|
||||
# ╔════════════════════════════════════════════════════╗
|
||||
# ║ INICIO DE SUBIDA DE ARCHIVOS ║
|
||||
# ╚════════════════════════════════════════════════════╝
|
||||
|
||||
echo ""
|
||||
echo "🚀 Subiendo archivos al repositorio remoto..."
|
||||
echo ""
|
||||
|
||||
REPO_URL=$(git config --get remote.origin.url)
|
||||
|
||||
git config --global credential.helper store
|
||||
echo "${REPO_URL/https:\/\//https://$USER:$TOKEN@}" > ~/.git-credentials
|
||||
|
||||
git push origin $BRANCH
|
||||
if [ $? -ne 0 ]; then
|
||||
echo ""
|
||||
echo "⚠️ Push fallido. Intentando pull con --allow-unrelated-histories..."
|
||||
git pull --no-rebase origin $BRANCH --allow-unrelated-histories
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo ""
|
||||
echo "✅ Pull exitoso. Reintentando push..."
|
||||
git push origin $BRANCH
|
||||
else
|
||||
echo ""
|
||||
echo "⚠️ Verificando conflictos..."
|
||||
CONFLICTS=$(git diff --name-only --diff-filter=U)
|
||||
|
||||
if [ -n "$CONFLICTS" ]; then
|
||||
echo ""
|
||||
echo "🚨 Conflictos detectados:"
|
||||
echo "$CONFLICTS"
|
||||
read -p "¿Hacer merge automático? (s/n): " RESP
|
||||
if [ "$RESP" == "s" ]; then
|
||||
git add .
|
||||
git commit -m "🔀 Merge automático"
|
||||
git push origin $BRANCH
|
||||
echo "🎉 Push completado después del merge."
|
||||
else
|
||||
echo "🛑 Merge cancelado. Resolvé manualmente."
|
||||
fi
|
||||
else
|
||||
echo "❌ Pull falló por otro motivo."
|
||||
fi
|
||||
fi
|
||||
fi
|
Reference in New Issue
Block a user