У меня большие проблемы с попыткой исправить репозиторий, который был инициализирован без некоторых типов файлов lfs в его .gitattributes, таких как wav, exr или psd.
Мой подход состоял в том, чтобы сначала добавить ихв файл .gitattributes, как те, которые были правильно зарегистрированы.
*. psd filter = lfs diff = lfs merge = lfs -text
Затем удалите их изкэшировать, ставить их, фиксировать.
$> git rm --cached -r .
$> git add --all
$> git commit -m "Added a lot of file types as large files"
Запуск git status
после постановки отлично показывает мне все и только файлы, новые для gitattributes. Кажется идеальным.
Но теперь мне нужно переписать мою историю для всех моих ветвей, я верю. Наиболее распространенным способом является использование git lfs migrate
. Итак:
$> git lfs migrate info --everything
migrate: Sorting commits: ..., done
migrate: Examining commits: 100% (299/299), done
*.tga 206 MB 48/48 files(s) 100%
*.exr 108 MB 248/248 files(s) 100%
...Some more
$> git lfs migrate import --everything
И здесь все разваливается. Все мои большие файлы в порядке, я могу открывать и редактировать их, но все мои ДРУГИЕ файлы (не зарегистрированные в .gitattributes) теперь указатели! Даже мои файлы .cs и .gitignore являются указателями, и git lfs ls-files
теперь показывает мне каждый файл моего репо ... И я имею в виду, если я дважды щелкаю по своему .gitignore, я теперь вижу что-то вроде
версия lol: //lol.lol.com/lol/v1
oid sha256: 4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393
размер 12345
1027
1027 *1027* 1027gitattributes? И почему в любом случае указатели размещаются на локальной копии репо?
Примечание
Я читал о --include="*.exr"
, но большинство примеров использования, которые я нашел в Интернете, не подходят для включения каких-либо включений,Я был бы удивлен, если бы у большинства людей, использующих lfs, не было скриптов и только большие файлы. Но дайте мне знать, если это единственный способ.
Спасибо!