Смена папки с помощью Git bash в Windows

19

Мне нужно изменить случай папок и файлов . Первое, что я пробовал, - это переименование папок, но Гит не взял изменения. Поэтому я попытался использовать git mv -f controller Controller , но он говорит:

fatal: renaming 'application/classes/controller failed: Permission denied

Я попытался установить глобальный флаг ignorecase:

git config --global core.ignorecase false

Но это все еще не работает. Некоторые люди предложили переместить папку из репо, удалить, а затем повторно добавить, но будет ли это изменение забираться, когда другие люди вытаскивают репо? Могу ли я попробовать что-нибудь еще?

Изменить: он работает с файлами, но не с папками.

    
задан xylar 29.01.2013 в 09:40
источник
  • Отказано в разрешении может просто исходить из того факта, что у вас есть окно проводника или клиент командной строки, у которого эта папка является текущим каталогом и, таким образом, предотвращает переименование. Убедитесь, что это не так и повторите попытку. –  Daniel Hilgarth 29.01.2013 в 09:49
  • Проблема в том, что файловая система Windows действительно сохраняется в памяти. Перемещение контроллера на контроллер будет перемещать его в себя. Вероятно, решение состоит в том, чтобы перенести его на временное, а затем на правильное имя. Или используйте достойную ОС ;-) –  Michael Wild 29.01.2013 в 10:28
  • @MichaelWild NTFS сохраняет регистр, и он может обрабатывать изменения, изменяющие регистр, отлично. Должно быть что-то еще блокирующее, вероятно, какое-то окно Проводника, как предложил Даниэль. –  Barend 29.01.2013 в 10:33
  • Возможно, это проблема в том, что git-mv (или, возможно, MSYS более низкого уровня или даже библиотеки CRT) реализует переименование. Я просто попробовал здесь, и переименование тоже потерпело неудачу. Однако, используя временную работу просто отлично. –  Michael Wild 29.01.2013 в 10:39
  • Проблема заключается в перемещении папок. Изменение файла файла работает. –  xylar 29.01.2013 в 10:51

3 ответа

41

Вкратце комментариев, вам придется переименовать каталог через промежуточное временное имя. Например.

git mv controller Controller-tmp
git mv Controller-tmp Controller

Я думаю, что это связано с тем, что реализация MinGW rename(2) не поддерживает эту операцию. См. Этот поток , документы MSDN на CRT rename .

    
ответ дан Michael Wild 29.01.2013 в 11:03
источник
0

Обязательно добавьте изменения в индекс после переименования папки с промежуточной папкой, как показано ниже.

git mv oldfolder newfolder

git add -u newfolder

git commit -m "changed the foldername whaddup"

Справка

    
ответ дан Duli 30.06.2014 в 13:52
источник
  • По моему опыту, git mv уже выполняет постановку. Было ли это с более старой версией? (2014 ...) –  xtofl 25.02.2016 в 16:14
0

Обязательно закройте Visual Studio и любые папки проводника Windows, связанные с этим путем.

    
ответ дан Oren Bengigi 08.03.2018 в 18:31
источник