Я работаю с git в Windows, и у меня есть файл в моем репо, скажем, "foo.txt".
Сегодня я хотел переименовать этот файл в "Foo.txt" (в верхнем регистре). Как было предложено в этом вопросе SO, я использовал git mv -f foo.txt Foo.txt
, который дал желаемый результат. Я приступил к совершению изменения моего репо.
EDIT: Я хотел бы, чтобы это было постоянным изменением и все еще способным совершить чек, который предшествует этому изменению.
Однако после этого я столкнулся с ошибкой при попытке переключить ветку:
# 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, похоже, устраняет проблему и позволяет мне менять ветки как обычно.
В связи с этим я хотел бы знать:
- Есть ли какой-либо неблагоприятный эффект от этой настройки? Должно ли это всегда быть на окнах? Что делать, если я работаю с другим разработчиком, и у них нет одинакового значения для этого?
- Есть ли другой способ переименовать файл без изменения этого параметра?
- Почему это происходит в первую очередь? Когда я совершил изменение, git правильно определил, что файл был фактически переименован (не удалял один файл, а затем добавлял другое). Итак, что именно произошло, когда я попытался переключить ветки?
Спасибо!