В нашей базе кода, управляемой git, есть пара файлов, которые я бы хотел переименовать. В частности, я просто хочу изменить регистр файла, чтобы он sourceCode.java
стал SourceCode.java
, например. Загвоздка: я нахожусь на коробке Windows, и файловая система думает, что это - то же самое имя файла.
Как я могу заставить Windows и Git распознать это изменение и зарегистрировать его?
git mv
должен работать ( stackoverflow.com/a/24979063/6309 ). Даже на Windows.Ответы:
Посмотрите здесь для получения дополнительных советов о том, как это сделать:
Как заставить git игнорировать изменения в случае?
Или:
источник
git add
из этой недавно переименованной папки НЕ ЗАПИСАТЬ, изменить имя папки обратно на то, что должно быть ,git add
он снова и затем совершить.Get-ChildItem '.' | Rename-Item {$_.Name.ToLowerCase()}
Если вы находитесь в файловой системе FAT, ваш единственный выбор - сделать двухэтапное переименование:
sourceCode.java
вanything.you.like
anything.you.like
вSourceCode.java
В те времена, когда мы использовали Perforce, у нас была именно эта проблема, и это было единственное решение, которое мы могли придумать.
источник
Следующие шаги позволили мне изменить регистр в Windows:
ignorecase = false
к[core]
в.git/config
;ignorecase = false
добавлено на первом шаге.Таким образом, у вас есть один коммит, который содержит переименование, и это позволяет легко изменить, например, весь каталог.
источник
Быть осторожен. Это может привести к изменениям, которые невозможно объединить. Git запутывается при слиянии в Windows, потому что не может решить, являются ли старое имя в верхнем регистре и новое имя в нижнем регистре одним и тем же файлом или нет (для Git это не так, но для файловой системы они есть). Чтобы объединить, вы должны сделать некоторые ручные обходные пути, такие как удаление файлов перед объединением.
Смотрите Git rebase с файлами с тем же именем, но с другим регистром
Я не уверен, что эта проблема хуже, чем наличие файла с нетрадиционными именами в вашем проекте навсегда, но стоит знать о том, есть ли много пользователей с большим количеством веток, которые в конечном итоге нужно будет объединить.
источник
На мой взгляд, один простой способ отсутствует. Вы можете сделать это для одного файла, определенного каталога или даже всего хранилища:
Если вы хотите повлиять также на подкаталоги, вы должны использовать
-r
флаг:источник
С NTFS (или FAT) одна
git mv
команда не решает проблему. Этот вопрос показывает технику, которая работает: git mv и только изменение регистра каталогаисточник