【问题标题】:Git case-sensitivity error -- renaming and committing from Android StudioGit 区分大小写错误——从 Android Studio 重命名和提交
【发布时间】:2015-06-11 16:21:33
【问题描述】:


例如,我有一个名为 FOOBar.java 的文件,我想将其重命名为 FooBar.java。在尝试了很多东西之后,我得到了错误:



Error:error: pathspec 'app/src/main/java/blahblah/FooBar.java' did not match any file(s) known to git.


我尝试过的事情(不工作,都产生相同的错误):

来自 Android Studio:
  • 删除FOOBar.java,重新创建FooBar.java,使用Git 添加/提交
  • 重构/重命名文件,使用 Git 添加/提交
  • File --> Invalidate Caches / Restart...,然后尝试上述方法之一
  • 重建项目 在上述任何一项之前/之后

在文件系统中:

  • 删除项目文件夹中的.gradle文件夹,然后在Android Studio中尝试上述方法之一

来自 Git 命令行:

  • git mv FOOBar.java FooBar.java --force 然后git commit FooBar.java -m 'renamed from FOOBar.java to FooBar.java'

【问题讨论】:

    标签: git android-studio case-sensitive


    【解决方案1】:

    http://binaryjeremys.blogspot.com/2015/03/android-studio-doesnt-like-it-when-you.html

    要解决此问题,我必须按照以下步骤重新启动:

    先备份文件: 右键单击其中一个文件并选择“在资源管理器中显示”。 复制任何已更改的文件或整个项目以确保安全。 在 Android Studio 中 删除所有冲突/出错的对象。 VCS -> Git -> 重置头 警告:这会将所有内容重置为您最后一次向头部提交。 完成后,请确保: 关闭项目,关闭 Android Studio,然后重新打开两者。 创建新类以用正确的名称替换已删除的冲突对象。 替换这些文件的内容,或将备份文件复制/粘贴到文件夹中。 现在提交并推送您的更改,它应该可以工作。

    点击链接了解主要问题原因。

    【讨论】:

      【解决方案2】:

      尝试重新启动 Android Studio!

      我在没有提交的存储库上遇到了这个问题。

      【讨论】:

        【解决方案3】:

        我遇到了类似的问题,我修改了 git config:

        git config core.ignorecase false
        

        【讨论】:

        • 这不会按预期工作。如果您将文件从 FOO.xyz 重命名为 Foo.xyz,那么 git 将假定您添加了一个名为 Foo.xyz 的新文件,但不会删除 FOO.xyz。因此,您最终会在服务器存储库上同时获得文件 FOO.xyz 和 Foo.xyz。
        【解决方案4】:

        我发现一个非常简单的解决方法是在终端中执行此命令

        git 重置

        【讨论】:

          【解决方案5】:

          我也遇到了几乎相同的情况,在我的情况下,我创建了一个文件并添加到 git(使用 git add ),添加到 git 后我重命名了文件。提交时我得到了相同的类型错误。 我通过以下步骤解决了

          使用git status查看暂存文件你可以在列表中看到你的旧文件

          - 
          -
          app/src/main/java/blahblah/FOOBar.java
          -
          -
          

          使用 git reset 从暂存中删除文件

          git reset app/src/main/java/blahblah/FOOBar.java
          

          从暂存中删除后,您可以添加新文件

          git add app/src/main/java/blahblah/FooBar.java
          

          之后你可以提交

          【讨论】:

            【解决方案6】:

            我找到了一个非常简单的解决方案。 假设您需要将 java 包“Activities”重命名为“activities”。这个包包含几个文件和子包

            按照步骤顺序进行

            1. 将“Activities”重构为“ActivitiesTemp”(Shift + F6)
            2. 提交并推送这些更改
            3. 再次从“ActivitiesTemp”重构为“activities
            4. 提交并推送这些更改

            就是这样!

            【讨论】:

            • 与我所做的类似。重命名所有文件。复制到别处。删除高级文件夹并删除所有文件。犯罪。然后将文件复制回来并添加并提交。是的,可能会丢失提交历史。但至少它有效。
            【解决方案7】:

            将文件重命名为原始文件,然后将其重命名为不同的名称,然后返回到具有正确大小写的文件。 Git 不会再抛出这个错误了,它和 Poke 指出的解决方案相同,但使用的是 android studio。

            例子:

            Created FOOBar class.
            Renamed it to FooBar and then got the error.
            Rename it back to FOOBar.
            Rename to FooBarTest.
            Rename to FooBar.
            Git works now.
            

            【讨论】:

              【解决方案8】:

              Windows 的文件系统大多不区分大小写,因此您不能仅通过更改文件的大小写来重命名文件。相反,您必须在两者之间使用一个临时名称。

              从命令行尝试以下操作:

              git mv FOOBar.java FooBar.java.new
              git mv FooBar.java.new FooBar.java
              git commit -m 'Rename file'
              

              【讨论】:

              • 谢谢@poke!我正在使用 Windows,但是在执行此操作时,我仍然收到相同的 error: pathspec 'FooBar.java' did not match any file(s) known to git 错误...
              • 您是在命令行中还是在 Android Studio 中获得的?尝试在执行此操作时关闭 Android Studio;另外,您在正确的目录中吗? git status 告诉你什么?
              • 谢谢@poke,做到了!我关闭了 Android Studio,按照您上面提到的方式重命名,然后能够成功地从 Git 命令行提交和推送。
              • 另外,补充一下 poke 所说的:确保问题文件的父目录的名称与 Git 显示的完全一致(例如,看看 Github 看到的内容)。例如,您可以在 Windows 中有一个名为“文件夹”的目录,如果没有正确移动/重命名,git 会很高兴地继续跟踪它,就好像它是“文件夹”一样。修复: git mv folder/ folder_new git mv folder_new/ Folder git commit -m 'Rename file'
              猜你喜欢
              • 1970-01-01
              • 2016-07-25
              • 2016-08-16
              • 2016-11-24
              • 1970-01-01
              • 2012-02-12
              • 1970-01-01
              • 2016-06-08
              相关资源
              最近更新 更多