git status reports modified files in a freshly cloned repo

谁都会走 提交于 2019-12-06 06:33:06

问题


Solved

It seems the remote repo contains two files named the same, except for the first letter. This caused a file overwrite on my system, which led to the issue below.

Update

It seems it has nothing to do with newlines, but I can't yet find an explanation. Here's what happens.

git status reports FileStartingWithCapitalLetter.php has been modified

On the other hand, browsing my case-insensitive file system, shows fileStartingWithCapitalLetter.php, which is actually starting with a lower-case "f".

git diff FileStartingWithCapitalLetter.php

shows this (the diff is hard to spot, it's the R in Redirect, which led me to think it has to do with CRLF):

diff --git a/test/functional/frontend/RedirectActionsTest.php b/test/functional/frontend/RedirectActionsTest.php
index 66e1fef..c574583 100644
--- a/test/functional/frontend/RedirectActionsTest.php
+++ b/test/functional/frontend/RedirectActionsTest.php
@@ -5,10 +5,10 @@ include(dirname(__FILE__).'/../../bootstrap/functional.php');
 $browser = new sfTestFunctional(new sfBrowser());

 $browser->
-  get('/Redirect/index')->
+  get('/redirect/index')->

   with('request')->begin()->
-    isParameter('module', 'Redirect')->
+    isParameter('module', 'redirect')->
     isParameter('action', 'index')->
   end()->

On the other hand, git diff fileStartingWithCapitalLetter.php (lower-case f), shows no changes.

What's the fix to this?

Old issue

I've cloned a git repo and then, immediately, executed git status. It was not a surprise to see that it reports modified files, as it happened to me before. There are CRLF line endings committed from a Windows machine (I'm on OS X).

Now, what really surprised me is that this didn't work:

$ git config core.autocrlf false
$ rm .git/index
$ git reset
Unstaged changes after reset:
M  test/functional/frontend/RedirectActionsTest.php

Does anyone have any ideas about what's wrong and how to solve it? I'm using Git 1.7.0.2.


回答1:


You could try to set this setting at the global level (Note: I also like having it set to false)

$ git config --global core.autocrlf false

and then clone again to see if this work better.

The other setting to watch out is: ignorecase true (also to set at the global level).
See this SO question as an example, and this one as an illustration of what can go wrong.



来源:https://stackoverflow.com/questions/3195140/git-status-reports-modified-files-in-a-freshly-cloned-repo

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!