在不同的Git分支中修复区分大小写的文件名问题

时间:2016-04-26 15:17:40

标签: git

我有多个分支(master,developer和feature / *),并且以不同的方式提交了文件名。

在master和develop分支中,我有Assets.php和events.php是正确的(它们是不同的供应商库,因此区别在于)。但在功能分支中,文件名目前是assets.php和Events.php,完全相反的外壳。当我尝试签出功能分支时,我收到以下错误。

error: The following untracked working tree files would be overwritten by checkout: 
    assets.php
    Events.php
Please move or remove them before you can switch branches.
Aborting

我设法通过一系列不科学的删除,提交,重新添加和提交来修复我的主人和开发分支之间的问题,我宁愿不为我的其他三个功能分支重复这个过程。

由于我甚至无法检查我的功能分支以从master / develop中获取更改,因此我不确定如何解决这个问题,而不会在每个分支上执行一系列删除/添加/提交文件。

解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

由于您似乎在Windows上(否则您不会遇到此问题),我会假设配置设置core.ignorecase已启用,但显然不是。

那我该做什么:

  • 使用core.ignorecase
  • 启用git config core.ignorecase true
  • 查看功能分支(现在应该可以使用)
  • 使用git mv修复文件名
  • 的情况

(您还应该能够再次禁用core.ignorecase并运行git status以查看是否有任何混淆。)

如果它不起作用,也许你需要更新版本的Git。我使用版本" 2.8.1.windows.1"。

测试了这个

另一个不依赖于core.ignorecase的解决方案是将repo克隆到一个新文件夹中,使用-b参数指定要在克隆时签出的分支,并在那里修复。由于git mv如果a.txt A.txt未设置或不受支持,core.ignorecase无法使用git mv a.txt a2.txt,因此您需要执行两项操作:{ {1}}和git mv a2.txt A.txt