En s'appuyant sur la réponse de theosp, j'ai écrit un script appelé git-cdc
(pour commit de changement de date) que j'ai placé dans mon PATH
.
Le nom est important: git-xxx
n'importe où dans votre PATH
vous permet de taper:
git xxx
# ici
git cdc ...
Ce script est en bash, même sur Windows (puisque Git l'appellera depuis son environnement msys)
#!/bin/bash
# commit
# date YYYY-mm-dd HH:MM:SS
commit="$1" datecal="$2"
temp_branch="temp-rebasing-branch"
current_branch="$(git rev-parse --abbrev-ref HEAD)"
date_timestamp=$(date -d "$datecal" +%s)
date_r=$(date -R -d "$datecal")
if [[ -z "$commit" ]]; then
exit 0
fi
git checkout -b "$temp_branch" "$commit"
GIT_COMMITTER_DATE="$date_timestamp" GIT_AUTHOR_DATE="$date_timestamp" git commit --amend --no-edit --date "$date_r"
git checkout "$current_branch"
git rebase --autostash --committer-date-is-author-date "$commit" --onto "$temp_branch"
git branch -d "$temp_branch"
Avec cela, vous pouvez taper:
git cdc @~ "2014-07-04 20:32:45"
Cela réinitialiserait la date de l'auteur/du commit du commit avant HEAD (@~
) à la date spécifiée.
git cdc @~ "il y a 2 jours"
Cela réinitialiserait la date de l'auteur/du commit du commit avant HEAD (@~
) à la même heure, mais 2 jours auparavant.
Ilya Semenov mentionne dans les commentaires:
Pour OS X, vous pouvez également installer les coreutils
de GNU (brew install coreutils
), les ajouter à votre PATH
(PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
) et ensuite utiliser la syntaxe "il y a 2 jours
".
0 votes
Lié: Comment changer les formats de date des journaux git
102 votes
git commit --amend --reset-author
0 votes
Le commentaire ci-dessus ^^ (@ErickM.Sprengel) devrait être la réponse acceptée. Facile à exécuter, surtout pour le dernier commit.