Files
git-operaciones/instalar-subir.sh
2025-08-16 02:14:51 -03:00

101 lines
4.0 KiB
Bash
Executable File

#!/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 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