我有多个分支(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中获取更改,因此我不确定如何解决这个问题,而不会在每个分支上执行一系列删除/添加/提交文件。
解决此问题的最佳方法是什么?
答案 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
。