Вопрос или проблема
Я настроил сервер FreeBSD 14.1 с исходными кодами и деревом портов. Затем, после установки некоторых портов и пакетов, я попытался обновить дерево портов, для чего установил git и сделал git init
в /usr/ports, получив дефолтный репозиторий master. Установил указатель на удаленный origin с веткой main, однако попытка git pull origin main
всегда заканчивается ошибкой.
Последовательность git add – git stash – git pull бесполезна, так как кеширование не имеет начального коммита. Однако git status отмечает буквально любой файл в дереве портов как новый.
Как сделать так, чтобы git мог обновить эти порты?
.
Ответ или решение
Теория
Судя по описанию проблемы, произошла путаница с настройкой Git в вашей системе FreeBSD 14.1. В частности, вы инициализировали репозиторий в /usr/ports
, что привело к созданию локального репозитория с веткой master
, которая не имеет общего коммита с удаленной веткой main
. Это создает проблемы при попытке выполнить git pull
, так как нет ничего для слияния, и все файлы в директории /usr/ports
распознаются как новые.
Пример
На практике, при работе с портами у FreeBSD пользователи обычно используют portsnap
или git
, чтобы синхронизировать местную копию портов с официальным репозиторием. Однако, сам процесс требует, чтобы начальная настройка была выполнена корректно, иначе возникает ситуация подобная вашей, когда отсутствует общий анамнез (история изменений) между локальными и удаленными репозиториями.
Применение
-
Удаление некорректного локального репозитория:
- Очистите и удалите текущий локальный репозиторий, чтобы начать с чистого листа.
cd /usr/ports rm -rf .git
- Очистите и удалите текущий локальный репозиторий, чтобы начать с чистого листа.
-
Загрузка и настройка правильного репозитория:
- Используйте команду для клонирования свежего порта из официального репозитория, что обеспечит корректное выравнивание с удаленной веткой.
git clone https://git.freebsd.org/ports.git /usr/ports
- Используйте команду для клонирования свежего порта из официального репозитория, что обеспечит корректное выравнивание с удаленной веткой.
-
Обновление портов:
- Теперь, при необходимости обновить порты, воспользуйтесь командой:
cd /usr/ports git pull
- Теперь, при необходимости обновить порты, воспользуйтесь командой:
Этот подход позволит вам синхронизировать локальные порты с актуальным состоянием официального репозитория FreeBSD. Таким образом, вы минимизируете риски возникновения ошибок при последующих обновлениях и сможете корректно использовать возможности Git для управления версиями.