我尝试放弃工作目录中的更改(重置为文件的当前索引版本),但是,git checkout -- <file>不会放弃这些更改。我尝试手动删除文件(rm -r files),然后运行git checkout -- .,它会再次将文件显示为已修改。
$ git checkout -- .
$ git status
# On branch master
# 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:   files/Hulk.png
#   modified:   files/Hulk_2.png
#
no changes added to commit (use "git add" and/or "git commit -a")运行git diff显示文件已修改...
diff --git a/files/Hulk.png b/files/Hulk.png
index 1c256cb..1d37fe0 100644
Binary files a/files/Hulk.png and b/files/Hulk.png differ
diff --git a/files/Hulk_2.png b/files/Hulk_2.png
index 1c256cb..0717199 100644
Binary files a/files/Hulk_2.png and b/files/Hulk_2.png differ注意:有些人说要运行git checkout .,但这将达到与git checkout -- .相同的结果。--只是在git checkout命令中使用的符号,用于区分树/提交点和文件/路径。
操作系统: OSX 10.6 Git: 1.7.10.2
发布于 2012-07-13 05:36:31
这是由于多个文件具有相同的名称但不同的大小写。在OSX中,不区分大小写,不喜欢多个同名不同大小写的文件。它将它们视为相同的文件。为了解决这个问题,我对一个临时文件名运行了git mv (或者只是mv),添加了临时文件,这允许git删除旧的/错误命名的版本,然后第二次提交来重新命名它们。这也可以在允许具有相同名称的不同文件具有不同大小写的文件系统上得到纠正。
发布于 2014-04-24 17:27:07
你试过了吗
git config --global core.autocrlf false或
git config --global core.filemode false发布于 2012-07-13 20:43:04
根据您的评论,您必须将存储库配置为区分大小写:
git config core.ignorecase false这允许git跟踪这两个文件(尽管文件系统只显示一个,这非常令人困惑)。以下是复制步骤,用于演示git正确跟踪大小写敏感度时发生的情况:
git init /tmp/test && cd /tmp/test
git config core.ignorecase false
echo test>test && git add test && git commit -m "lowercase t"
mv test Test现在git status与test没有什么不同
git status -s
 ?? Test提交Test并使用git ls-files查看我们现在正在跟踪的内容:
git add Test && git commit -m "uppercase T"
git ls-files
 Test
 testls会报告什么?为什么,只是“测试”,很自然:
ls
 Test最后,当我们修改Test时会发生什么?
echo garbage>Test
git status -s
 M Test
 M test啊!怎么这么乱呀。
https://stackoverflow.com/questions/11458926
复制相似问题