【发布时间】:2013-03-07 08:58:05
【问题描述】:
我在 Windows 上使用 git,我的仓库中有一个文件,可以说“foo.txt”。
今天我想把这个文件重命名为“Foo.txt”(大写)。正如this SO question 中所建议的那样,我使用了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 正确地识别出该文件实际上已重命名(没有删除一个文件然后添加另一个文件)。那么当我尝试切换分支时究竟发生了什么?
谢谢!
【问题讨论】:
标签: git rename case-sensitive file-rename ignore-case