Modifica i timestamp durante il rebase di git branch


97

Ho riorganizzato i commit in un ramo prima che venga reso pubblico, facendo sì che i timestamp dei commit siano in un ordine confuso. Preferirei che fossero tutti oggi con solo pochi secondi in mezzo.

Ovviamente anche questi timestamp non saranno corretti, ma poiché questo è il momento in cui le cose diventano pubbliche, lo preferisco a una storia confusa, dal punto di vista temporale.

Quindi come faccio a dire a git di creare nuovi timestamp durante il rebase?

Risposte:


134
git rebase --ignore-date

2
L'ho provato prima di postare .. Tranne che non l'ho fatto in modo interattivo, forse è questo il trucco? Inoltre, hai provato l'alias --committer-date-is-author-date? Forse il --ignore-date è stato introdotto nella versione successiva, non ne ho idea.
Michael Krelin - hacker

2
Sì, se fatto in modo non interattivo funziona. Ma poi, come sempre con rebase, il primo commit non viene influenzato.
tarsius

2
@ MichaelKrelin-hacker: secondo la documentazione, --ignore-date Questi flag vengono passati a git am per cambiare facilmente le date dei commit ribasati (vedere git-am [1]). Incompatibile con l'opzione --interactive.
Tim

4
@Tim Il root commit non ha un genitore e quando ho posto questa domanda volevo anche cambiare la data di quel commit. Ora abbiamo --root, il che lo rende possibile.
tarsius

3
Incompatible with the --interactive option. Vedere i documenti
Vlastimil Ovčáčík

28

Nel mio caso il rebasing ha cambiato i timestamp al valore CommitDate, quindi in gitweb un gruppo di commit vecchi di mesi si presentava come 4 giorni. Ho trovato l'ultimo commit con la data corretta e ho fatto:

$ git rebase --committer-date-is-author-date SHA

39
No non lo è. In effetti, è l'esatto contrario. Dai documenti di git rebase: " Questi flag vengono passati a git amper cambiare facilmente le date dei commit ribasati ". In git amesso dice: --committer-date-is-author-date" [...] consente all'utente di mentire sulla data del committer utilizzando lo stesso valore della data dell'autore " mentre --ignore-date" [...] consente all'utente di mentire sulla data dell'autore utilizzando lo stesso valore come data del committer ".
Enrico Campidoglio

9

Ci sono i seguenti modi

  1. Rebase normale

    git rebase --ignore-date
    
  2. Rebase interattivo

    git rebase -i master
    git commit --amend --date=now
    git push origin <branch> -f
    
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.