Змінюйте мітки часу під час перебазування гілки git


97

Я реорганізував коміти у гілці, перш ніж вони будуть оприлюднені, внаслідок чого мітки часу комітів будуть у змішаному порядку. Я волів би, щоб усі вони були сьогодні сьогодні, лише між секундами.

Очевидно, що ці позначки часу теж не будуть правильними, але оскільки це час, коли все стає загальнодоступним, я віддаю перевагу цьому перед змішаною історією, за часом.

То як я можу сказати git створювати нові позначки часу під час перебазування?

Відповіді:


134
git rebase --ignore-date

2
Я пробував це перед публікацією .. За винятком того, що я не робив цього інтерактивно, можливо, це фокус? Крім того, ви пробували псевдонім --committer-date-is-author-date? Можливо, --ignore-date було введено в пізнішій версії, я не маю уявлення.
Майкл Крелін - хакер

2
Так, якщо це зробити неінтерактивно, це працює. Але тоді - як завжди з rebase - це не впливає на перше комітування.
tarsius

2
@ MichaelKrelin-hacker: згідно з документацією, --ignore-date Ці прапори передаються в git am, щоб легко змінити дати перебазованих комітів (див. Git-am [1]). Несумісний з опцією --interactive.
Тім,

4
@Tim Кореневий коміт не має батьків, і коли я задав це питання, я також хотів змінити дату цього коміту. Тепер ми маємо --root, що робить це можливим.
tarsius

3
Incompatible with the --interactive option. Див. Документи
Властиміл Овчачик

28

У моєму випадку перебазування змінило мітки часу на значення CommDate, тому в gitweb купа місячних комітів відображалася як 4-денна. Я знайшов останній коміт із правильною датою і зробив:

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

39
Ні це не так. Насправді це прямо протилежне. З документів git rebase: " Ці прапори передаються, git amщоб легко змінити дати перебазованих комітів ". У git amньому сказано: --committer-date-is-author-date" [...] дозволяє користувачеві брехати про дату комітера, використовуючи те саме значення, що і дата автора ", тоді як --ignore-date" [...] дозволяє користувачеві брехати про дату автора, використовуючи те саме значення як дата учасника ".
Enrico Campidoglio

9

Існують наступні способи

  1. Звичайне перебазування

    git rebase --ignore-date
    
  2. Інтерактивне перебазування

    git rebase -i master
    git commit --amend --date=now
    git push origin <branch> -f
    
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.