-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgit_sync.sh
More file actions
77 lines (60 loc) · 2.78 KB
/
git_sync.sh
File metadata and controls
77 lines (60 loc) · 2.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/bin/bash
# Script para confirmar, mezclar y subir cambios con fecha del 16 de Abril de 2026
set -e
# Configurar fecha objetivo: 16 de Abril de 2026
TARGET_DATE="2026-04-16T18:00:00"
# Detectar rama actual
CURRENT_BRANCH=$(git branch --show-current)
echo "Rama actual detectada: $CURRENT_BRANCH"
# Agregar archivos modificados
echo "Agregando archivos..."
git add README.md .github/assets/banner.svg
# Realizar commit con autoría y fecha de confirmación si hay cambios en el índice
if ! git diff --cached --quiet; then
echo "Creando commit retroactivo..."
GIT_AUTHOR_DATE="$TARGET_DATE" GIT_COMMITTER_DATE="$TARGET_DATE" git commit -m "style: rediseñar perfil de GitHub y agregar banner SVG"
else
echo "No hay cambios en el índice (los cambios ya podrían estar confirmados localmente)."
fi
# Determinar si es necesario mezclar con main/master
if [ "$CURRENT_BRANCH" != "main" ] && [ "$CURRENT_BRANCH" != "master" ]; then
# Intentar buscar si la rama principal es 'main' o 'master'
MAIN_BRANCH="main"
if ! git show-ref --verify --quiet refs/heads/main; then
if git show-ref --verify --quiet refs/heads/master; then
MAIN_BRANCH="master"
fi
fi
echo "Cambiando a la rama principal ($MAIN_BRANCH) para realizar merge..."
git checkout "$MAIN_BRANCH"
echo "Sincronizando rama principal con remoto..."
git pull origin "$MAIN_BRANCH" --rebase
echo "Realizando merge con fecha retroactiva..."
GIT_AUTHOR_DATE="$TARGET_DATE" GIT_COMMITTER_DATE="$TARGET_DATE" git merge "$CURRENT_BRANCH" --no-ff -m "merge: incorporar mejoras de perfil desde $CURRENT_BRANCH"
echo "Subiendo cambios a la rama principal..."
git push origin "$MAIN_BRANCH"
# Regresar a la rama de trabajo si es necesario
echo "Regresando a la rama de trabajo..."
git checkout "$CURRENT_BRANCH"
else
# Verificar si hay cambios locales en archivos rastreados (staged o unstaged)
if [ -n "$(git status --porcelain | grep -v '??')" ]; then
echo "Guardando cambios locales temporales (stash)..."
git stash -q
HAS_STASH=true
else
HAS_STASH=false
fi
echo "Sincronizando con repositorio remoto (pull --rebase)..."
git pull origin "$CURRENT_BRANCH" --rebase
echo "Asegurando fecha retroactiva en el último commit..."
GIT_AUTHOR_DATE="$TARGET_DATE" GIT_COMMITTER_DATE="$TARGET_DATE" git commit --amend --no-edit --date="$TARGET_DATE"
echo "Subiendo cambios directamente a $CURRENT_BRANCH..."
git push origin "$CURRENT_BRANCH"
# Restaurar los cambios guardados si se creó un stash
if [ "$HAS_STASH" = true ]; then
echo "Restaurando cambios locales temporales (stash pop)..."
git stash pop -q
fi
fi
echo "¡Listo! Cambios confirmados y subidos con fecha del 16 de abril de 2026."