Cambiar las marcas de tiempo mientras se reajusta la rama git

97

He reorganizado las confirmaciones en una rama antes de que se hagan públicas, lo que hace que las marcas de tiempo de las confirmaciones estén en un orden confuso. Preferiría que todos estuvieran hoy con solo unos segundos entre ellos.

Obviamente, estas marcas de tiempo tampoco serán correctas, pero dado que este es el momento en que las cosas se hacen públicas, prefiero eso a una historia confusa, en cuanto al tiempo.

Entonces, ¿cómo le digo a git que cree nuevas marcas de tiempo mientras reajusta?

tarsius
fuente

Respuestas:

134
git rebase --ignore-date
Michael Krelin - hacker
fuente
2
Lo he probado antes de publicarlo. Excepto porque no lo he hecho de forma interactiva, ¿quizás ese es el truco? Además, ¿ha probado el alias --committer-date-is-author-date? Quizás el --ignore-date se introdujo en una versión posterior, no tengo idea.
Michael Krelin - hacker
2
Sí, si se hace de forma no interactiva, funciona. Pero luego, como siempre con rebase, la primera confirmación no se ve afectada.
tarsius
2
@ MichaelKrelin-hacker: de acuerdo con la documentación, --ignore-date Estos indicadores se pasan a git am para cambiar fácilmente las fechas de las confirmaciones rebasadas (ver git-am [1]). Incompatible con la opción --interactive.
Tim
4
@Tim La confirmación de root no tiene un padre, y cuando hice esta pregunta, también quería cambiar la fecha de esa confirmación. Ahora tenemos --root, lo que lo hace posible.
tarso
3
Incompatible with the --interactive option. Ver documentos
Vlastimil Ovčáčík
28

En mi caso, la rebase cambió las marcas de tiempo al valor de CommitDate, por lo que en gitweb un montón de confirmaciones de meses de antigüedad aparecieron con 4 días de antigüedad. Encontré la última confirmación con la fecha correcta e hice:

$ git rebase --committer-date-is-author-date SHA
lkraav
fuente
39
No, no es. De hecho, es exactamente lo contrario. De los documentos de git rebase: " Estos indicadores se pasan a git ampara cambiar fácilmente las fechas de las confirmaciones modificadas ". En git amél dice: --committer-date-is-author-date" [...] permite al usuario mentir sobre la fecha del autor usando el mismo valor que la fecha del autor " mientras que --ignore-date" [...] permite al usuario mentir sobre la fecha del autor usando el mismo valor como fecha de confirmación ".
Enrico Campidoglio
9

Hay las siguientes formas

  1. Rebase normal

    git rebase --ignore-date
    
  2. Rebase interactivo

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