Git для Windows создает коммиты с повторяющимися датами до предыдущей?
Я использую Git для Windows и GUI, который поставляется вместе с ним, и когда я создаю новый коммит в Git Bash или Git GUI, он создает новые коммиты с той же датой, что и предыдущая.
Я понятия не имею, почему он это делает. Я получил большинство коммитов, которые мне нужно было сделать сегодня вечером, но я не хочу, чтобы все мои коммиты застревали 13 ноября!
Через неделю (20.11) я все еще могу воспроизвести эту проблему. Это мои глобальные переменные Git:
MINGW64 /d/Users/Public/Music/Playlists (master)
$ echo ${!GIT_*}
GIT_EXEC_PATH
MINGW64 /d/Users/Public/Music/Playlists (master)
$ echo $GIT_EXEC_PATH
C:\Program Files\Git\mingw64/libexec/git-core
2 ответа
Краткий ответ: не меняйте коммиты, я думаю.
Я знаю, что я исправил коммиты, не влияя на следующий коммит в других системах, то есть Linux и OS X, но просто для исправления моего текущего репозитория, чтобы я мог продолжать его использовать, вот что я сделал:
Playlists2$ git checkout e71521b3b26c5e053fa7ce2f4e2ca602de9b734f
C:\WINDOWS\system32>ROBOCOPY Playlists2 Playlists1 /MIR /COPY:D /XD .git
Playlists1$ GIT_AUTHOR_DATE="2016-11-13 19:47:27" GIT_COMMITTER_DATE="2016-11-13 19:47:27" git commit -m "Massive UUID updates for entire directory, but restore last modified date\n\nROBOCOPY <backup> <cwd> /COPY:T /XD .git"
Playlists2$ git checkout 9ec2d7abfac0c1a1c5eaeb58abedcb65bbab29e5
C:\WINDOWS\system32>ROBOCOPY Playlists2 Playlists1 /MIR /COPY:D /XD .git
Playlists1$ GIT_AUTHOR_DATE="2016-11-13 21:26:46" GIT_COMMITTER_DATE="2016-11-13 21:26:46" git commit -m "Fix missing tracks and save dates before mass deleting playlists"
Playlists2$ git checkout fdea81464c9fff080249b5287693a4d0555fcc06
C:\WINDOWS\system32>ROBOCOPY Playlists2 Playlists1 /MIR /COPY:D /XD .git
Playlists1$ GIT_AUTHOR_DATE="2016-11-13 22:11:51" GIT_COMMITTER_DATE="2016-11-13 22:11:51" git commit -m "Remove unused playlists and collapse soundtracks into mega playlist"
Playlists2$ git checkout 0fe301fc61526944ae178d360b0482739e0dfefc
C:\WINDOWS\system32>ROBOCOPY Playlists2 Playlists1 /MIR /COPY:D /XD .git
Playlists1$ GIT_AUTHOR_DATE="2016-11-13 22:18:34" GIT_COMMITTER_DATE="2016-11-13 22:18:34" git commit -m "Remove interwoven, contemporary, duplicate, and missed playlists"
Playlists2$ git checkout
C:\WINDOWS\system32>ROBOCOPY Playlists2 Playlists1 /MIR /COPY:D /XD .git
Playlists1$ GIT_AUTHOR_DATE="2016-11-13 22:22:00" GIT_COMMITTER_DATE="2016-11-13 22:22:00" git commit -m "Add new playlist for Aurora"
Я восстановил старую версию своего каталога Playlists, переименовав его в Playlists1 (пришлось удалить desktop.ini, из-за которого каталог отображался как Playlists) с текущей поврежденной версией Playlists2, проверял каждый коммит из Playlists2, зеркалировал данные в Playlists1, исключая.git, и сделал коммит с переопределением даты.
Я поэкспериментирую с тестовым репозиторием, который я создал, поскольку есть способ исправить репозиторий Git, чтобы он снова начал фиксироваться с правильной датой автора (так как первые 2 были дубликатами, а следующие три были дубликатами), и я уйду этот вопрос до сих пор не принят.
Git принимает редко используемые переопределения из окружения, и единственное, о чем я могу подумать, это приведет к описанному здесь поведению, если вы как-то ушли GIT_COMMITTER_DATE
установить и экспортировать. Возможно, вы поставили скрипт в свою запущенную оболочку?
В любом случае, вы можете увидеть имена любых текущих переопределений git с echo ${!GIT_*}.
unset` их, если вы найдете что-нибудь, это должно сделать это.