Git сквош и сохранение последней метки времени фиксации
Предположим, что я совершил
... -- A -- B -- C
Если я использую git rebase -i
для сквоша всех трех коммитов в один, мы могли бы
pick A
squash B
squash C
Я вижу, что приведенный commit A
имеет свою исходную временную метку. Как заставить наследовать временную метку commit C
(последняя)?
То, что я могу представить, это git commit --amend --date=<new_time>
, но этот способ должен помнить временную метку commit C
перед сквошем или из reflog.
Я считаю, что временная метка последней фиксации более разумна, потому что она показывает, когда я действительно закончил работу, которая находится в фиксации.
Спасибо.
Ответы
Ответ 1
Там нет тривиального способа сделать это, но есть несколько вариантов. Здесь один:
git commit --amend --date="$(git show -s --pretty=tformat:%ai <sha1-of-C>)"
И еще:
git commit --amend -c <sha1-of-C>
Последний будет сжимать ваше существующее сообщение фиксации, поэтому вам придется переписать его.
Ответ 2
git commit --amend --reset-author