это - git удалить файл




Изменение капитализации имен файлов в Git (6)

Я пытаюсь переименовать файл, чтобы иметь другую капитализацию от того, что у него было до этого:

git mv src/collision/b2AABB.js src/collision/B2AABB.js
fatal: destination exists, source=src/collision/b2AABB.js, destination=src/collision/B2AABB.js

Как вы можете видеть, git подбрасывает это. Я попробовал переименовать, используя только обычную старую команду mv но git не забирает переименование (как переименование или новый файл без следа).

Как я могу изменить файл, чтобы иметь другую капитализацию с тем же именем? Я нахожусь в Mac OS X 10.7.3 с git 1.7.9.1, используя zsh 4.3.15.


Вы можете открыть каталог «.git», а затем отредактировать файл «config». В разделе «[core]» установите «ignorecase = true», и вы закончите;)


Для массового git mv файлов в нижнем регистре на macOS:

for f in *; do git mv "$f" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done

Он будет содержать все файлы в папке.


Иногда вы хотите изменить капитализацию большого количества файлов на OS X. Выполнение команд git mv быстро устает, чтобы сделать вещи немного легче, это то, что я делаю:

  1. Переместите все файлы за пределы каталога, чтобы разрешить использование Desktop.
  2. Сделайте git add . -A git add . -A удалить все файлы.
  3. Переименуйте все файлы на рабочем столе в правильную заглавную.
  4. Переместите все файлы обратно в исходный каталог.
  5. Сделайте git add . git должен видеть, что файлы переименованы.

Теперь вы можете сделать фиксацию, указав, что вы изменили капитализацию файла.


Начиная git 2.0.1 (25 июня 2014 года), git mv будет работать только на нечувствительной к регистру ОС .

См. Commit baa37bf by David Turner ( dturner-tw )

mv : разрешить переименование в случае исправления на нечувствительных к регистру файловых системах

« git mv hello.txt Hello.txt » в файловой системе, нечувствительной к регистру, всегда вызывает ошибку « destination already exists », поскольку эти два имени относятся к одному и тому же пути с точки зрения файловой системы и требуют, чтобы пользователь дал « --force «при исправлении случая пути, записанного в индексе и в следующем коммите.

Обнаружите этот случай и разрешите его, не требуя « --force ».

git mv hello.txt Hello.txt работает только (no --force требуется больше).


Учитывая приведенные выше ответы, вы можете заставить его работать с одной командой с помощью «--force»:

 git mv --force myfile MyFile

Этот фрагмент python будет git mv --force все файлы в каталоге должны быть строчными, ex: foo / Bar.js станет foo / bar.js через git mv foo/Bar.js foo/bar.js --force

Измените его по своему вкусу, просто подумайте, что я поделюсь :)

import os
import re

searchDir = 'c:/someRepo'
exclude = ['.git', 'node_modules','bin']
os.chdir(searchDir)

for root, dirs, files in os.walk(searchDir):
    dirs[:] = [d for d in dirs if d not in exclude]
    for f in files:
        if re.match(r'[A-Z]', f):
            fullPath = os.path.join(root, f)
            fullPathLower = os.path.join(root, f[0].lower() + f[1:])
            command = 'git mv --force ' + fullPath + ' ' + fullPathLower
            print(command)
            os.system(command)




file-rename