Changer les horodatages lors du rebasage de la branche git

97

J'ai réorganisé les commits dans une branche avant qu'elle ne soit rendue publique, ce qui rend les horodatages des commits dans un ordre mélangé. Je préférerais qu'ils soient tous aujourd'hui avec seulement quelques secondes entre les deux.

De toute évidence, ces horodatages ne seront pas non plus corrects, mais comme c'est le moment où les choses deviennent publiques, je préfère cela à une histoire mélangée, en termes de temps.

Alors, comment dire à git de créer de nouveaux horodatages lors du rebasage?

Tarse
la source

Réponses:

134
git rebase --ignore-date
Michael Krelin - hacker
la source
2
Je l'ai essayé avant de poster. Sauf que je ne l'ai pas fait de manière interactive, c'est peut-être le truc? Aussi, avez-vous essayé l'alias --committer-date-is-author-date? Peut-être que la --ignore-date a été introduite dans une version ultérieure, je n'en ai aucune idée.
Michael Krelin - hacker
2
Oui, si cela est fait de manière non interactive, cela fonctionne. Mais alors - comme toujours avec rebase - le tout premier commit n'est pas affecté.
tarsius
2
@ MichaelKrelin-hacker: selon la documentation, --ignore-date Ces drapeaux sont passés à git am pour changer facilement les dates des commits rebasés (voir git-am [1]). Incompatible avec l'option --interactive.
Tim
4
@Tim Le commit root n'a pas de parent, et quand j'ai posé cette question, je voulais aussi changer la date de ce commit. Maintenant nous l'avons --root, ce qui rend cela possible.
tarsius
3
Incompatible with the --interactive option. Voir la documentation
Vlastimil Ovčáčík
28

Dans mon cas, le rebasage des horodatages modifiés en valeur CommitDate, donc dans gitweb, des commits vieux de plusieurs mois sont apparus comme datant de 4 jours. J'ai trouvé le dernier commit avec la date correcte et j'ai fait:

$ git rebase --committer-date-is-author-date SHA
lkraav
la source
39
Non ce n'est pas. En fait, c'est exactement le contraire. Extrait de la documentation de git rebase: " Ces indicateurs sont passés à git ampour changer facilement les dates des commits rebasés ". Il git amdit: --committer-date-is-author-date" [...] permet à l'utilisateur de mentir sur la date de validation en utilisant la même valeur que la date de l'auteur " tandis que --ignore-date" [...] permet à l'utilisateur de mentir sur la date de l'auteur en utilisant la même valeur comme date du committer ".
Enrico Campidoglio
9

Il existe les moyens suivants

  1. Rebase normal

    git rebase --ignore-date
    
  2. Rebase interactif

    git rebase -i master
    git commit --amend --date=now
    git push origin <branch> -f
    
Umar Asghar
la source