- Как установить ROS?
- Как установить пакеты ROS?
- Как удобно управляться в системе пакетов ROS?
- Я делаю
git commit, а он хочет e-mail и имя - Как делать
git pushс паролем - Создал удаленный репозиторий с README, а он не дает сделать push и pull с ошибкой
fatal: refusing to merge unrelated histories
Установка ROS описана на официальном сайте.
Не забываем после установки активировать системное рабочее пространство. Для этого нужно выполнить в терминале 2 команды:
# Активация ROS при каждом запуске терминала
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
# Активация ROS в этом терминале
source ~/.bashrcЕсли используется в качестве оболочки zsh, то пользуется немного другим setup файлом:
# Активация ROS при каждом запуске терминала
echo "source /opt/ros/noetic/setup.zsh" >> ~/.zshrc
# Активация ROS в этом терминале
source ~/.zshrcВот такой командой мы устанавливаем пакеты в Ubuntu:
sudo apt install [имя пакета]Для ROS, например, пакеты имеют шаблон ros-noetic-[название]. Например, для установки move-base вызываем команду:
sudo apt install ros-noetic-move-baseДля работы с пакетами в консоли был разработан целый пакет - rosbash.
В него входят утилиты:
roscd- перейти в пакет
roscd study_pkgrosls- отобразить список файлов пакета
rosls study_pkgrosed- изменить (открыть редактор) файл пакета
# Переменная EDITOR задает редактор, через который откроется файл
export EDITOR=code
rosed study_pkg CMakeLists.txtroscp- копировать файл пакета
# Копировать `CMakeLists.txt` в домашнюю директорию
roscp study_pkg CMakeLists.txt ~/rosrun- запустить узел в пакете
rosrun rospy_tutorials talkerУтилиты rospd и rosd работают со стеком директорий. Их использование можно опустить до специальных приемов.
Во время первого коммита Git может ругнуться:
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.Значит надо настроить данные о пользователе:
git config user.email "user@mail.ru"
git config user.name "User User"Использование опции
--globalнастраивает почту и имя на всю систему. Без использования опции настройка применится только к репозиторию, в котором делается коммит.
Для пуша через HTTPS вариант в GitHub необходимо создать токен для доступа. Делается это в настройках (Settings) пользователя. Далее идем в Developer settings -> Personal access token.
Можно напрямую по ссылке, если в браузере авторизированы: тык.
После этого создается токен, указывается длительно жизни токена (через это кол-во дней стухает) и даете доступ до repo.
Готово, обязательно сохрани его, показывается он один раз. Хотя ничего не мешает создавать его каждый раз, если так удобно.
Вот картинкой:
Создал удаленный репозиторий с README, а он не дает сделать push и pull с ошибкой fatal: refusing to merge unrelated histories
Это нередкая проблема на началах, когда отдельно создается локальный и отдельно удаленный репозиторий с README или другими файлами.
Чаще при начале проекта сначала создается удаленный и просто клонируется, но попробуем решить проблему!
Такая проблема при попытке push показывает:
To github.com:KaiL4eK/my-new-super-repo.git
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'git@github.com:KaiL4eK/my-new-super-repo.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.Подсказка pull не помогает с ошибкой:
From github.com:KaiL4eK/my-new-super-repo
* branch main -> FETCH_HEAD
fatal: refusing to merge unrelated histories(Рекомендуем) Есть вариант сделать pull с опцией --allow-unrelated-histories:
git pull origin main --allow-unrelated-historiesЭто сделает merge (слияние) историй коммитов и получится единая история, не забудь сделать push после этого!
(Не рекомендуем) Другой вариант - сделать force push, это перепишет удаленную историю локальной. История удаленных коммитов при это будет удалена.
git push -u origin main -fЕще раз подсветим, force push не рекомендуем, так как любое изменение истории коммитов нарушает связность.
