cambiar la fecha de un /commit/ usando =GIT_COMMITER_DATE=

· osiux's blog

.org | .md | .gmi | .html

# la hora del commit

Muchas veces, estoy enajenado y/o enrroscado y considero que no estoy para realizar el commit porque le falta algo más y suele pasar que o bien agrando la tarea o si de casualidad ya estaba listo para commitear y surgió algo por lo que tuve que alejar del teclado y se pasó la hora, o el día del commit y no esta bueno que la fecha de un commit no refleje la fecha y hora de cuando realmente se realizó (o cuando se debería haber realizado).

# commit en pausa

Una estrategia que aprendí hace un par de años es la antes que termine el día iniciar el commit utilizando git commit pero dejándolo en pausa, y a la mañana siguiente, café de por medio, un poco mas tranquilo, redactar bien el comentario, con la ventaja de que al terminar, la hora y fecha del commit es el día anterior, que refleja el esfuerzo tal y como fue.

# GIT_COMMITER_DATE

Se puede redefinir la fecha y hora de un commit antes de realizar utilizando la variable GIT_COMMITER_DATE, por ejemplo si quisiera registrar que un commit se hizo ayer 2021-03-09 a la misma hora de hoy 2021-03-10 23:52 se puede basta ejecutar de la siguiente manera:

1GIT_COMMITER_DATE="$(date -d 'now -1 days')" git commit --amend --date "$(date -d 'now -1 days')"
2

# la máquina del tiempo

Para generalizar, creé una función gct git commit time y simplemente especificando 25m, 2h, 1d:

 1function gct()
 2{
 3
 4local D
 5local N
 6local T
 7
 8N="$(echo "$1" | grep -Eo "[0-9]+")"
 9T="$(echo "$1" | grep -Eo "[a-z]+")"
10
11[[  -z   "$1" ]] && exit 1
12[[  -z   "$N" ]] && exit 1
13
14[[  -z   "$T" ]] && T='minutes'
15[[ "$T" = 'm' ]] && T='minutes'
16[[ "$T" = 'h' ]] && T='hours'
17[[ "$T" = 'd' ]] && T='days'
18
19D="$(date -d "now -$N $T")"
20GIT_COMMITTER_DATE="$D" git commit --date "$D"
21
22}
23

# ChangeLog