8

运行 Windows 7 并从Git-1.8.3-preview20130601.exe.

我的工作目录中有一个修改过的文件,我想将它恢复到上次提交时的状态。我尝试了各种调用git checkout,但修改后的文件仍保留在我的工作目录中。例如:

[C:\Work\BitBucket\proj1] 14:32:45>git status
On branch work2
Your branch is behind 'origin/work2' by 9 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)
Changes not staged for commit:
   (use "git add <file>..." to update what will be committed)
   (use "git checkout -- <file>..." to discard changes in working directory)

       modified:   pomodoro.html
 no changes added to commit (use "git add" and/or "git commit -a")

[C:\Work\BitBucket\proj1] 14:32:53>git checkout pomodoro.html

[C:\Work\BitBucket\proj1] 14:33:00>git status
 On branch work2
 Your branch is behind 'origin/work2' by 9 commits, and can be fast-forwarded.
   (use "git pull" to update your local branch)

 Changes not staged for commit:
   (use "git add <file>..." to update what will be committed)
   (use "git checkout -- <file>..." to discard changes in working directory)

       modified:   pomodoro.html
 no changes added to commit (use "git add" and/or "git commit -a")

[C:\Work\BitBucket\proj1] 14:33:04>

(我得到相同的结果git checkout -- pomodoro.html。)

所以,git 认为 pomodoro.html 被修改了,但是当我使用

git difftool  

我被告知文件是相同的。

不知道它是否相关,但我已经在我的 Git 配置中core.autocrlf设置了。true但是,当我将其更改为时,false我得到了相同的行为。

4

3 回答 3

5

这个链接(由 AD7Six 提供)——help.github.com/articles/dealing-with-line-endings——似乎是答案:修复行尾。
由于 autocrlf 已设置为 true,因此不确定该文件中的行结尾是如何弄乱的。
感谢所有其他评论。

于 2013-07-17T17:42:35.693 回答
3

我在 osx 上遇到了类似的问题,这是由于两个文件名称相同但大小写不同:https ://sourcedevelop.org/blog/post/fix-git-commands-not-working-some-files

我花了几个小时试图弄清楚如何修复它,按照这些说明进行操作。识别具有相同名称的两个文件的症状的关键是,当您对文件执行 git checkout 时,您会在下一个 git status 中看到该文件,但是文件的大小写不同。我最终删除了这些文件,然后又添加了其中一个。

git rm -f <filename>
git rm -f <filename>
git commit -m "Removing duplicate files"
<put the file back, the version you want>
git add . 
git commit -m "adding files back"
于 2017-01-01T22:35:28.657 回答
2

这是一个疯狂的镜头,但是:

该文件是否出于某种原因在 repo 中标记为可执行文件?html 不太可能,但如果它已存储在例如胖格式的驱动器上,这是可以想象的。如果是这种情况,并且您的 Windows git 未配置为忽略权限,则该文件将始终更改,因为没有多少重置或签出会给您 Windows 上的可执行位。

摆脱消息将文件模式设置为false:https ://superuser.com/a/139044/236874

于 2013-07-15T09:11:23.220 回答