2016-11-14 72 views
3

我使用Git for Windows以及随之而来的GUI,当我在Git Bash或Git GUI中创建一个新的提交时,它会创建与之前的日期相同的新提交。Git for Windows正在创建提交重复日期到前一个的提交?

Git GUI showing duplicate dates created

我不知道为什么它这样做。我已经完成了大部分我今晚需要完成的提交,但是我不希望所有提交都会在11月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'在另一个存储库上玩,就像在你的答案(原文?)我是从另一个分支快速转发提交,他们都有相同的日期,所以我试图导入他们的正确日期。其实,现在我看着它没有工作,并在2016年设置了我的2015年提交中的两个: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个是重复的),以及直到那时我才会拒绝这个问题。

3

Git takes rarely-used overrides from the environment,我能想到的唯一能产生你所描述这里的行为是如果你不知何故离开了GIT_COMMITTER_DATE设置和导出。也许你从脚本进入你的运行shell?

无论如何,你可以看到任何当前git覆盖的名称,如果你找到任何它应该这样做的话,它们会被取消设置。

+0

我出来晚了,所以昨晚我没有打开电脑。今天祝你好运。 – NobleUplift

+0

我将回声的输出添加到了我的问题中。只设置了'GIT_EXEC_PATH'。 – NobleUplift

+0

并且之后立即执行命令行中的'git commit',并且生成的提交没有系统日期?检查系统的日期的想法,这是在虚拟机或其他?在你的系统上有一些非常非常敏感的东西。 – jthill