Подтвердить что ты не робот

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.

Я считаю, что временная метка последней фиксации более разумна, потому что она показывает, когда я действительно закончил работу, которая находится в фиксации.

Спасибо.

4b9b3361

Ответ 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