很久以前,我创建了一个存储库并提交了一个名为CameraAction.java的文件。
随着时间的推移,我发现'A'的大写导致了Spring Boot的一些问题(无法准确记住问题是什么),但我认为调用我的类Cameraaction.java会更安全
现在,每次从git中取出时,都会得到CameraAction.java文件名而不是Cameraaction.java。
当我编译应用程序时,这会导致冲突,因为文件名和类名拼写不一样:
CameraAction.java:12: error: class Cameraaction is public, should be declared in a file named Cameraaction.java
public class Cameraaction extends Action {
^
我该如何解决这个问题?
我试着这样做:
git rm --cached CameraAction.java
但它回到我身边说:
fatal: pathspec 'CameraAction.java' did not match any files
答案 0 :(得分:1)
将CameraAction.java
提交为Cameraaction.java
(不是正确的做法,请参阅下面的Java命名约定链接)尝试执行以下操作:
git mv -f CameraAction.java Cameraaction.java
后跟git commit -m "Fixed the case of a file"
和git push
通过重新git clone
并检查文件已签出为Cameraaction.java
如果在执行上述操作时,您收到“文件存在”错误,请使用tmp文件执行此操作,如下所示:
git mv CameraAction.java CameraAction.java.tmp
git mv CameraAction.java.tmp Cameraaction.java
但正如上面一位评论者所指出的那样,Java Naming Code Conventions对类名做了以下说明:
Git有一个配置设置,告诉它是区分大小写还是不区分大小写:core.ignorecase
。要告诉Git区分大小写,只需将此设置设置为false
:
git config core.ignorecase false
core.ignorecase
如果为true,则此选项启用各种变通方法,以使git能够更好地处理不区分大小写的文件系统,如FAT。例如,如果目录列表在git期望
makefile
时找到Makefile
,则git将假定它实际上是同一个文件,并继续将其记住为Makefile
。默认值为false,除了git-clone(1)或git-init(1)将在创建存储库时探测并设置
core.ignorecase
为真。
答案 1 :(得分:0)
你在做什么操作系统?很可能你不在* nix上。具体来说,您可能有一个案例保留,但案例不敏感的文件系统。
您可以尝试自行将文件重命名为if not exist "achievements\Start the Game.txt" (
copy nul "achievements\Start the Game.txt">nul
echo Achievement Get: Start the Game!
)
,或仅Cameraaction.java
。