我曾经有一个名为contactPoint
的文件,其中包含SKPhysicsContact
类的声明。
后来,我决定将课程重命名为ViewMVC.java
。因此,文件名更改为ViewMVC
。我很久以前就把这个改变推向了远程。
我面临的问题是,当我克隆远程仓库时,文件将被拉为ViewMvc
(类名称为ViewMvc.java
,如预期的那样)。换句话说 - 由于某种原因,文件的名称将恢复为旧名称。
我尝试再次更改名称并推送到远程,但问题没有以这种方式解决。
为什么会发生这种情况的任何想法以及如何解决这个烦人的问题?
答案 0 :(得分:1)
根据评论中的讨论,我认为问题是git实际上并不认为你在重命名文件时会改变任何东西。您希望它将ViewMVC.java
视为已删除,将ViewMvc.java
视为新文件(有时会将其报告为ViewMVC.java renamed to ViewMvc.java
),但由于不区分大小写设置,我猜测它只是说"不,没有什么改变那么重要。"
问题是,树对象 - 本质上是一个文本文件,读起来像目录列表 - 仍然具有旧的大写字母。同样,由于不区分大小写的设置,如果在工作树中以这种方式存在,它将很乐意使用不同的大小写来处理文件;但是在克隆上,它默认为树对象中的大写。
所以,你必须得到它来更新树对象(理想情况下,你关心的每个提示提交)。
在具有区分大小写的fs(并相应地设置git config)的系统上,您可以简单地克隆存储库,再次移动文件,git add .
,使用git status
确认它看到了重命名和提交。
要在Windows系统上修复它,我唯一能想到的就是删除文件,提交,然后使用正确大写的文件名重新创建文件并再次提交。
答案 1 :(得分:0)
每当有人重命名具有不同案例的同名文件时,我们的项目就会发生这种情况。
因为git默认情况下不区分大小写,您可以在设置中更改它,但最简单,最快捷的解决方案是将文件重命名为ViewMvc1.java>提交和推送>再次重命名为ViewMvc.java>提交和推送。