#git
#git
Вопрос:
Я сделал git svn clone
первый (репозиторий SVN огромен!), Что привело к локальному репозиторию git (я удалил содержимое svn (например, .git / svn и .git / config)).
Теперь я хотел отправить его в git, размещенный в Visual Studio, и я получаю эту ошибку: удаленная распаковка не удалась: ошибка Объект дерева 0db6571b0a0437f867b536f4b41810edaaa41f0c был отклонен: файл ‘app.config’ и файл ‘App.config’, отправленные в регистр, отличаются. Вы должны удалить или переименовать один из них.
Это полный дамп из терминала:
$ git push -u origin --all
Username for 'https://<private>.visualstudio.com': frank
Password for 'https://frank@<private>.visualstudio.com':
Counting objects: 395082, done.
Compressing objects: 100% (97018/97018), done.
Writing objects: 100% (395082/395082), 2.29 GiB | 58.26 MiB/s, done.
Total 395082 (delta 279171), reused 395082 (delta 279171)
error: remote unpack failed: error The tree object 0db6571b0a0437f867b536f4b41810edaaa41f0c was rejected: The file 'app.config' and the file 'App.config' pushed differ in case. You must remove or rename one of them.
To https://<private>.visualstudio.com/<private>/_git/<private>
! [remote rejected] master -> master (The tree object 0db6571b0a0437f867b536f4b41810edaaa41f0c was rejected: The file 'app.config' and the file 'App.config' pushed differ in case. You must remove or rename one of them.)
error: failed to push some refs to 'https://<private>.visualstudio.com/<private>/_git/<private>'
Я не уверен, что это за App.config, и я также не уверен, находятся ли [Aa] pp.config.config внутри старых коммитов.
Главный вопрос:
- Как мне объединить все это репозиторий?
«Дополнительные» вопросы:
- Как мне найти этот конкретный файл?
- Как мне переименовать файл в более старой фиксации?
- Могу ли я игнорировать этот файл в целом?
Ответ №1:
Я смог решить это двумя способами, оба работают независимо:
Метод первый:
Сначала установите ‘git-extras’.
Затем определите неправильный файл, проверив объект дерева с помощью:
git ls-tree -r --long --full-tree 0db6571b0a0437f867b536f4b41810edaaa41f0c
После этого используйте git obliterate из git extras:
git obliterate path/to/App.config
Метод второй:
Я использовал Git Azure DevOps в качестве цели. У этого, по-видимому, есть некоторые секретные настройки 😉 Отключение этих параметров тоже заставило все это работать:
Комментарии:
1. Просто чтобы прокомментировать, что вам не следует отключать этот параметр, если вы не хотите, чтобы произошло следующее: в операционных системах, которые не чувствительны к регистру, таких как Windows, две папки с одинаковыми именами с различиями только в прописных буквах, из-за этого создадут два разных запроса на извлечение в одной и той же ветке.
Ответ №2:
Вы всегда можете переименовать один из файлов во что-то другое, просто чтобы войти в систему управления версиями и проверить его, а затем выяснить, что с ними делать.
Это может быть один и тот же файл, просто другой корпус, поскольку похоже, что ваша текущая система, над которой вы работаете, основана на файловой системе, чувствительной к регистру.
Также есть команда git mv [filename], если вам нужно конкретно изменить оболочку файла для git.
Комментарии:
1. Как мне найти этот файл? У меня сотни App.config. Я изучу git mv
2. Ну, это должно быть в той же папке, что и друг с другом, если бы файлы были в разных папках, вы бы не получили это сообщение. Поэтому я бы начал с поиска имен этих файлов, чтобы выяснить, где дублирование, чтобы найти правильные файлы для просмотра.
3. Я напишу сценарий для этого завтра. Но мое внутреннее ощущение говорит, что он находится в старом коммите, а не в текущем каталоге.
4. Мне будет интересно посмотреть, что получится.
5. Файл находится в более старой фиксации, а не в текущей версии.