git автор дата фиктивна, как только произошло изменение или перебазирование

Я наблюдаю странное поведение в своей истории git:

Я могу зафиксировать как обычно, используя git gui, а дата автора и дата коммиттера верны при просмотре в gitk.

Но как только я выполняю исправление через git gui или перебазирование через git bash, все последующие коммиты имеют правильную дату фиксации, а дата автора совпадает с последней фиксацией до этого процесса перезаписи - иногда несколько дней назад.

Когда я закрываю git-gui, gitk и их родительский git bash и снова открываю их, дата следующих коммитов снова верна - до следующей перебазировки/изменения

git-gui версии 0.20.GITGUI (используется под Windows)

git версии 2.10.0.windows.1 (x64 бит)


person PhilLab    schedule 27.09.2016    source источник
comment
Это происходит, если вы выполняете перебазирование через git bash, не используя сначала git gui? Мне любопытно, сколько способов пробирается этот жучок/загрязнитель окружающей среды.   -  person Superole    schedule 29.11.2016
comment
Кажется, что это происходит только с открытым графическим интерфейсом. И мне также не нужно закрывать графический интерфейс и bash, чтобы он снова заработал - достаточно перезапустить графический интерфейс.   -  person PhilLab    schedule 29.11.2016
comment
Отлично. Спасибо. :D   -  person Superole    schedule 29.11.2016


Ответы (2)


Причина

Это вызвано ошибкой в ​​Git Gui (в Git для Windows >=v2.8.2.windows.1), которая устанавливает переменные среды GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL и GIT_AUTHOR_DATE при фиксации с помощью ammend. Эти переменные переопределяют все настройки автора для любой операции, которая создает коммиты, такие как перебазирование, коммит, слияние и т. д.

Исправить

Это должно быть исправлено в следующей версии (v2.11.x?) G4W.

Обходной путь

Закройте Git Gui сразу после коммита с поправкой.

person Superole    schedule 30.11.2016
comment
Спасибо. У вас есть ссылка на багтрекер? - person PhilLab; 20.12.2016
comment
Кажется, исправлено в v2.11.0 - по крайней мере, я больше не наблюдал такого поведения с момента обновления. - person PhilLab; 21.12.2016
comment
@PhilLab, это приятно слышать. Эта ошибка не отслеживалась сама по себе, но упоминалась как побочный эффект здесь github .com/git-for-windows/git/issues/761 - person Superole; 24.12.2016

Такое поведение является особенностью. Git имеет отдельные значения для даты автора и даты фиксации.

Дата автора отражает время, когда эта фиксация была создана в первый раз, и она сохраняется.

Дата фиксации обновляется каждый раз, когда вы меняете, перебазируете и т. д.

Чтобы увидеть оба, git log --pretty=fuller.

Если вы хотите сбросить время автора, git commit --amend --reset-author.

person orgads    schedule 30.09.2016
comment
Хорошо, я понимаю это для коммитов, которые я изменил впоследствии. Но для всех новых коммитов, которые я создаю впоследствии, время остается фиксированным в прошлом. - person PhilLab; 30.09.2016
comment
О, тогда это ошибка в git gui. Переменные среды должны быть сброшены после фиксации. - person orgads; 01.10.2016