Як мені перейменувати файл у git, який відрізняється лише у кожному випадку?


14

У своєму проекті git (Xcode) я вчинив ім'я файлу з неправильним регістром. Тепер я спробував перейменувати його, але коли я виконую зобов’язання, отримую:

fatal: Не додаватиме псевдонім файлу 'MyProject / MyFile.h' ('MyProject / MyFilE.h' вже існує в індексі)

Я впевнений, що це тому, що git не використовується для файлової системи, що зберігає регістри, нечутливої ​​до регістру, як HFS +. Але як мені це обійти?

Я спробував перейменувати обидва файли на щось інше, і зробив це, а потім перейменував їх назад на те, що я хочу, але це все-таки не вдається (з тим же повідомленням про помилку).

Відповіді:


21

На запитання та відповіді на stackoverflow , існує простіший спосіб зробити це, що не передбачає створення нової файлової системи у файлі образу диска:

Відсуньте наявний файл убік, зробіть цей крок, а потім перемістіть його назад, використовуючи той випадок, який ви хочете, щоб він підтримував і робив. Зроблено.

Приклад:

mv foo foo2
git add -A
git commit -m "renaming"
mv foo2 FOO
git add -A
git commit --amend -m "renamed foo to FOO"

в інтересах уникнення гниття посилань, як правило, ми просимо вас скопіювати відповідні частини відповіді за посиланням в тіло відповіді.
Ян Ч.

Дякуємо @ ian-c. Я сподівався, що це правило не поширюється на посилання всередині сімейства stackexchange.
mspasov

1
Так, я розумію, що ви говорите, але послідовність приємна.
Ян Ч.

Дивно. Я був позитивний, що спробував це, але сьогодні це працює. Спасибі.
Кен

2

Я ще не знайшов способу виправити це безпосередньо у файловій системі, нечутливій до регістру, вам потрібна файлова система, залежна від регістру.

На щастя, Mac OS X має гарну підтримку монтажу віртуального диска, тому ви можете швидко та легко отримати (зробити) файлову систему (тимчасову), залежну від регістру, на своєму комп’ютері.

Відкрийте програму Disk Utility, створіть нове зображення та встановіть поле "Формат" на одну із залежних від регістру версій "Mac OS Extended". Також переконайтеся, що ви зробили його досить великим для вашого сховища.

Встановіть новий диск, перегляньте на ньому сховище git, переконайтесь, що правильно названий файл має правильний вміст, та видаліть інший. Введіть і натисніть свої зміни, і тоді ви зможете демонтувати образ диска та видалити його.

Якщо у вас немає віддаленого сервера, з якого можна клонувати (тобто ви просто запускаєте git repo локально на своєму жорсткому диску), пам’ятайте, що ви можете клонувати безпосередньо з іншого сховища git на вашому жорсткому диску.


1
Це жахливо трудомістко. Це можна зробити без необхідності спінінгу нової файлової системи у файлі образу диска.
Ян C.

1

Крок 1 : Просто перейменуйте файл із іменем, яке відрізняється (ніж лише регістр букв). Просто виберіть випадкове ім’я, яке відрізняється від поточного імені та від імені, яке ви хочете дати йому.

Крок 2 : зафіксуйте цей файл за допомогою GUI (Xcode) або CLI (Terminal)

Крок 3 : перейменуйте файл, як ви хотіли перейменувати його в першу чергу. Тож тепер також буде більше різниці, ніж просто справа з попередньою назвою.

Крок 4 : повторно скопіюйте перейменований файл.

Ніяких фокусів не потрібно. Ви можете скористатися графічним інтерфейсом або CLI.


0

Я використовую sourcetree. Без використання CLI є легкий крок для цього. перейменуйте файл на інше ім’я (наприклад, Index.php до Index_old.php), потім зробіть і натисніть .. знову змінити ім'я на потрібне ім'я (index.php), після чого введіть і подайте.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.