2016-11-14 33 views
3

Я использую Git для Windows и графический интерфейс, который появляется вместе с ним, и когда я создаю новое коммитирование в Git Bash или Git GUI, он создает новые коммиты с той же датой, что и перед ним.Git for Windows создает коммиты с повторяющимися датами к одному перед ним?

Git GUI showing duplicate dates created

Я понятия не имею, почему он делает это. Я получил большую часть коммитов, которые мне были нужны сегодня вечером, но я не хочу, чтобы все мои коммиты застряли 13 ноября!

Неделю спустя (11/20), и я все еще могу воспроизвести эту проблему. Это мои глобальные переменные 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 
+1

В следующий раз, когда вы сделаете или собираетесь совершить фиксацию в git bash, выполните 'echo $ {! GIT _ *}', что покажет, что имена каких-либо git переопределяют как-то зависающие. Такое поведение, которое вы описываете здесь, не является нормальным. Единственное, о чем я могу думать до сих пор, так это то, что вы как-то установили и экспортировали GIT_COMMITTER_DATE', возможно, вы использовали сценарий, а не просто его запускали? – jthill

+0

@jthill Я играл с 'GIT_COMMITTER_DATE' в другом репозитории, где, как и в вашем ответе (sic?), Я быстро переадресовывал фиксацию из другой ветви, и все они получили одну и ту же дату, поэтому я пытался импортировать их с правильным Дата. На самом деле, теперь, когда я смотрю на это, что не работает, и установил две из моих обязательств в 2016 году: https://github.com/NobleUplift/BackToBack/commits/master – NobleUplift

+0

Я попытаюсь исправить вышеупомянутую проблему когда я вернусь домой, и я буду плакать, чтобы спать в углу, теперь я должен снова попробовать «фильтр-ветвь» на BackToBack. – NobleUplift

ответ

1

Короткий ответ: Не вносите поправки, я думаю.

Я знаю, что я с поправками совершает без него влияя на следующей фиксации на других системах, то есть 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" 

Я восстановил старую версию моей директории Списки воспроизведения, переименование Playlists1 (пришлось удалить desktop.ini, который сделал отображение каталога в качестве плейлистов) с текущей версией испорченного Playlists2, проверили каждый совершает от Playlists2, зеркальные данные в плейлисты1, исключая папку .git, и сделали фиксацию с переопределением даты.

Я буду играть с тестовым репозиторием, который я создал, так как есть способ исправить репозиторий Git, чтобы он снова начал запись с правильной датой автора (так как первые 2 были дубликатами, а следующие три были дубликатами) и До тех пор я оставлю этот вопрос неприемлемым.

3

Git takes rarely-used overrides from the environment, и единственное, что я могу думать о том, что будет производить поведение вы описываете здесь, если вы каким-то образом покинул GIT_COMMITTER_DATE набор и экспорт. Возможно, вы использовали сценарий в своей рабочей оболочке?

В любом случае, вы можете увидеть имена любых текущих git-переопределений с echo ${!GIT_*}. unset` them, если найдете что-нибудь, что должно это сделать.

+0

Я опоздал, поэтому вчера не выключил компьютер. Лучше удачи сегодня. – NobleUplift

+0

Я добавил вывод этого эха на мой вопрос. Установлен только параметр «GIT_EXEC_PATH». – NobleUplift

+0

И сразу после этого вы выполняете 'git commit' из командной строки, и в результате коммитов нет системной даты? Проверьте идею системы о дате, это в VM или что-то в этом роде? Что-то очень, очень scwewy на вашей системе. – jthill