windows上的Git:Can';重命名文件后的t开关分支(仅更改大小写)

windows上的Git:Can';重命名文件后的t开关分支(仅更改大小写),git,rename,case-sensitive,file-rename,ignore-case,Git,Rename,Case Sensitive,File Rename,Ignore Case,我在windows上使用git,我的repo中有一个文件,比如“foo.txt”。 今天我想把这个文件重命名为“Foo.txt”(大写)。正如中所建议的,我使用了git mv-f foo.txt foo.txt,这产生了所需的结果。我继续将变更提交我的回购协议。 编辑:我希望这是一个永久性的更改,并且仍然能够在更改之前签出提交 但是,在此之后,我在尝试切换分支时遇到了一个错误: # I'm on branch1 git checkout branch2 Aborting error:

我在windows上使用git,我的repo中有一个文件,比如“foo.txt”。 今天我想把这个文件重命名为“Foo.txt”(大写)。正如中所建议的,我使用了git mv-f foo.txt foo.txt,这产生了所需的结果。我继续将变更提交我的回购协议。
编辑:我希望这是一个永久性的更改,并且仍然能够在更改之前签出提交

但是,在此之后,我在尝试切换分支时遇到了一个错误:

# I'm on branch1  
git checkout branch2  
Aborting  
error: The following untracked working tree files would be overwritten by checkout:  
Foo.txt  
Please move or remove them before you can switch branches.  
经过一番探索,我发现我的
.git/config
文件具有以下设置:

[core]  
    ignorecase=false  
将此更改为true似乎可以解决问题,并允许我像往常一样在分支之间进行更改

关于这一点,我想知道:

  • 此设置是否有任何不利影响?在windows上是否应该始终如此?如果我与其他开发人员一起工作,而他们没有为此设置相同的值,该怎么办
  • 是否有其他方法可以重命名文件而不必更改此设置
  • 首先,为什么会发生这种情况?当我提交更改时,git正确地识别出该文件实际上已重命名(没有删除一个文件,然后再添加另一个文件)。那么,当我试图切换分支时到底发生了什么
  • 谢谢

    在不必更改配置设置的情况下克服此问题的一种简单(但不雅观)方法是删除文件并再次签出。在我的情况下,这允许我的更改分支恢复正常

    编辑:正如Avivr所指出的,我提出的解决方案并不能永久解决问题。我仍然不会删除此答案,因为它在某些情况下可能作为临时热修复程序有所帮助。

    如“”中所述,将
    核心设置为
    true
    是允许签出继续的有效方法

    但我宁愿,如在“”中一样:

    • git add
      我刚刚修改的内容(在您的情况下,
      git mv
      可能已经将重命名的文件添加到索引中)
    • git stash
      ,保存索引
    • git checkout-b另一个分支
      :这应该可以工作,因为索引是干净的
    • git stash pop
      ,如果要恢复该新索引上的大小写更改

    这意味着每次我想更改分支时都要删除该文件,从现在到永远。对吗?看起来有点不方便…你真的试过了吗?在我的情况下,它起了作用,但我不会声称我能完全再现你的情况是的,我做到了,至少假设我正确地理解了你。我用git重命名了文件,然后提交了更改。然后我删除了该文件(仅使用
    rm
    ),并使用
    git checkout.
    将其还原。之后,更改分支时会出现相同的错误。好的,但我想提交重命名。问题是,如果我这样做,我就不能在那之后切换分支。@avivr您不能在提交之后切换,即使使用
    core。忽略
    设置为
    false
    ?不,就像我说的,我只能在分支设置为true时切换分支。此外,在我像你建议的那样隐藏了重命名之后,我在尝试弹出隐藏时遇到了相同的错误。所以这个藏品是“不可能”的,我不得不放弃它。@avivr对不起,我的意思是设置为真,真的。