"46.71.77.17 - 46.71.77.17"

Как внести изменения в имена файлов только с учетом регистра в Git?

Я изменил имя нескольких файлов, разделив первую букву, как в Name.jpg, на Name.jpg. Git не распознает эти изменения, и мне пришлось удалить файлы и загрузить их снова. Есть ли способ, который Git может быть чувствителен к регистру при проверке изменений имен файлов? Я не внес никаких изменений в сам файл.

1001
16 июля '13 в 20:41
источник поделиться
13 ответов

Вы можете использовать git mv:

git mv -f OldFileNameCase newfilenamecase
1215
03 янв. '14 в 18:57
источник

Связанные вопросы


Похожие вопросы

Git имеет параметр конфигурации, который сообщает ему, должен ли быть чувствительным к регистру или нечувствительным: core.ignorecase. Чтобы сообщить Git значение case-senstive, просто установите для этого параметра значение false:

git config core.ignorecase false

Документация

Из git config документация:

core.ignorecase

Если значение true, этот параметр позволяет использовать различные способы обхода, чтобы Git работал лучше в файловых системах, которые не чувствительны к регистру, например FAT. Например, если список каталогов обнаруживает makefile, когда Git ожидает makefile, Git будет считать, что это действительно тот же файл, и продолжать запоминать его как makefile.

Значение по умолчанию - false, кроме git -clone (1) или git -init (1) будет проверять и устанавливать core.ignorecase true, если это необходимо, когда создается репозиторий.

Нечувствительные к регистру файловые системы

Две самые популярные операционные системы, которые не имеют файловых систем без регистра, которые я знаю, являются

  • для Windows
  • OS X
808
17 июля '13 в 1:52
источник

Это то, что я сделал на OS X:

git mv File file.tmp
git mv file.tmp file

Два шага, потому что в противном случае я получил ошибку "файл существует". Возможно, это можно сделать за один шаг, добавив --cached или такой.

102
13 нояб. '13 в 17:27
источник

Используя SourceTree, я смог сделать все это из пользовательского интерфейса

  • Переименуйте FILE.ext в whatever.ext
  • Этап
  • Теперь переименуем whatever.ext в FILE.ext
  • Снова повторите этот файл

Это немного утомительно, но если вам нужно всего лишь сделать это несколько файлов, это довольно быстро

99
28 окт. '16 в 17:40
источник

В OSX, чтобы избежать этой проблемы и избежать других проблем с разработкой в ​​файловой системе без учета регистра, вы можете использовать Disk Utility для создания образа диска с жестким диском/образа диска.

Запустите утилиту диска, создайте новый образ диска и используйте следующие настройки (или измените по своему усмотрению, но сохраните его с учетом регистра):

Mac Disk Utility Screenshot

Обязательно сообщите git, что теперь он находится на чувствительном к регистру FS:

git config core.ignorecase false
41
03 окт. '14 в 22:18
источник

Иногда может быть полезно временно изменить чувствительность к регистру в Git. Два возможных метода:

Способ 1 (очень временный):

git -c core.ignorecase=true checkout mybranch чтобы отключить чувствительность к регистру для одной команды checkout. Или, в более общем случае: git -c core.ignorecase= <<true or false>> <<command>>. (Благодарим VonC за предложение об этом в комментариях.)

Метод 2 (полупостоянный):

Чтобы изменить настройку на более длительный срок (например, если необходимо выполнить несколько команд, прежде чем снова ее изменить):

  1. git config core.ignorecase (возвращает текущие настройки, например, false).
  2. git config core.ignorecase <<true or false>> - установить желаемый новый параметр.
  3. ... Выполнить несколько других команд...
  4. git config core.ignorecase <<false or true>> - вернуть значение конфигурации к предыдущему значению.
26
10 июля '18 в 14:05
источник

1) переименуйте файл Name.jpg в name1.jpg

2) зафиксировать удаленный файл Name.jpg

3) переименуйте файл name1.jpg в Name.jpg

4) добавляет добавленный файл Name.jpg к предыдущему фиксации

git add
git commit --amend
15
03 окт. '16 в 22:13
источник

Я попробовал следующие решения из других ответов, и они не сработали:

Если ваш репозиторий размещен на GitHub, как у меня, вы можете переименовать файл в источнике (GitHub.com) и принудительно переименовать файл сверху вниз.

Приведенные ниже инструкции зависят от типа файла, который вы пытаетесь переименовать, то есть от типа файла, который GitHub считает редактируемым (код, текст и т.д.) Или недоступным для редактирования (изображение, двоичный файл и т.д.) В браузере.

  1. Посетите GitHub.com
  2. Перейдите в свой репозиторий на GitHub.com и выберите ветку, в которой вы работаете
  3. Используя инструмент навигации по файлам сайта, перейдите к файлу, который вы собираетесь переименовать
  4. GitHub позволяет вам редактировать файл в браузере?
    • а.) редактируемый
      1. Нажмите значок "Редактировать этот файл" (он выглядит как карандаш)
      2. Изменить имя файла в текстовом вводе имени файла
    • б) не редактируемые
      1. Откройте кнопку "Загрузить" в новой вкладке и сохраните файл на свой компьютер.
      2. Переименовать загруженный файл
      3. На предыдущей вкладке на GitHub.com щелкните значок "Удалить этот файл" (он выглядит как мусорная корзина)
      4. Убедитесь, что выбран переключатель "Записать непосредственно в branchname ветки" и нажмите кнопку "Зафиксировать изменения".
      5. В том же каталоге на GitHub.com, нажмите кнопку "Загрузить файлы"
      6. Загрузите переименованный файл с вашего компьютера
  5. Убедитесь, что выбран переключатель "Записать непосредственно в branchname ветки" и нажмите кнопку "Зафиксировать изменения".
  6. Локально, оформить/получить/потянуть ветку
  7. Готово
9
31 окт. '17 в 21:22
источник

Mac OSX High Sierra 10.13 это несколько исправляет. Просто создайте виртуальный раздел APFS для ваших проектов git, по умолчанию он не имеет ограничения по размеру и не занимает места.

  1. В Дисковой утилите нажмите кнопку +, когда выбран Контейнерный диск
  2. Выберите APFS (регистр -s в обязательном порядке) в формате
  3. Назовите это Sensitive
  4. прибыль
  5. Необязательно: Создайте папку в Sensitive с именем git и ln -s/Volumes/Sensitive/git/Users/johndoe/git

Ваш диск будет в /Volumes/Sensitive/

enter image description here

Как мне зафиксировать изменения в именах файлов в Git только для случая -s?

5
06 марта '18 в 18:01
источник

Я несколько раз сталкивался с этой проблемой в MacOS. Git чувствителен к регистру, но Mac сохраняет только регистр.

Кто-то фиксирует файл: Foobar.java и через несколько дней решает переименовать его в Foobar.java. Когда вы вытаскиваете последний код, он терпит неудачу с The following untracked working tree files would be overwritten by checkout...

Единственный надежный способ, который я видел, это исправление:

  • git rm Foobar.java
  • Закрепите его сообщением, которое вы не можете пропустить git commit -m 'TEMP COMMIT!!'
  • Прицепные
  • Это вызовет конфликт, который заставит вас объединить конфликт - потому что ваше изменение удалило его, но другое изменение было переименовано (следовательно, проблема).
    • Примите ваше изменение, которое является "удалением"
    • git rebase --continue
  • Теперь оставьте свое обходное решение git rebase -i HEAD~2 и drop TEMP COMMIT!!
  • Подтвердите, что файл теперь называется Foobar.java
3
05 авг. '16 в 20:23
источник

Когда вы сделали много переименования файлов, а некоторые из них - просто замена корпуса, трудно вспомнить, что есть. вручную "git перемещение", файл может быть весьма полезной. Итак, что бы я делал в процессе изменения имени файла, выполните следующие действия:

  • удалите все файлы и папки без git в другую папку/репозиторий.
  • фиксировать текущую пустую папку git (это будет отображаться по мере удаления всех файлов.)
  • добавить все файлы обратно в исходную папку git/репозиторий.
  • фиксировать текущую непустую папку git.

Это устранит все проблемы, не пытаясь определить, какие файлы или папки вы переименовали.

2
29 апр. '17 в 14:00
источник

Я использовал следующие шаги:

git rm -r --cached .
git add --all .
git commit -a -m "Versioning untracked files"
git push origin master

Для меня это простое решение

1
05 апр. '19 в 21:30
источник

Если ничего не работает, используйте git rm filename, чтобы удалить файл с диска и добавить его обратно.

0
12 апр. '19 в 21:11
источник

Посмотрите другие вопросы по меткам или Задайте вопрос