Пошук уроків, статей та іншого контенту
Навчитеся додавати, переглядати, перейменовувати й видаляти віддалені репозиторії та їхні URL.
Віддалений репозиторій — це репозиторій, розташований на іншому сервері або комп’ютері. Наприклад, це може бути репозиторій на GitHub, GitLab чи іншому Git-сервері.
Команда git remote керує зв’язками між локальним репозиторієм і віддаленими репозиторіями:
додає віддалений репозиторій;
показує наявні віддалені репозиторії;
змінює їхні URL;
перейменовує віддалені репозиторії;
видаляє віддалені репозиторії з локальної конфігурації.
Віддалений репозиторій має:
ім’я, наприклад origin;
URL для отримання змін — fetch URL;
URL для надсилання змін — push URL.
Найчастіше для обох операцій використовується один URL.
Віддалений репозиторій — це не обов’язково фізичне сховище. У локальному Git його ім’я та URL зберігаються як налаштування. Команда
git remote addсама не створює репозиторій на сервері.
Щоб переглянути імена всіх налаштованих віддалених репозиторіїв, виконайте:
git remoteПриклад результату:
origin
upstreamЗа замовчуванням Git часто використовує ім’я origin для основного віддаленого репозиторію. Це лише загальноприйнята назва, а не спеціально зарезервоване слово.
Щоб побачити імена та URL:
git remote -vПриклад результату:
origin https://github.com/user/project.git (fetch)
origin https://github.com/user/project.git (push)Позначення в дужках показують призначення URL:
fetch — звідки Git отримує зміни;
push — куди Git надсилає зміни.
Для отримання URL конкретного віддаленого репозиторію можна використати:
git remote get-url originЯкщо для репозиторію налаштовано кілька URL, параметр --all покаже їх усі:
git remote get-url --all originЗагальний синтаксис:
git remote add <ім’я> <URL>Наприклад:
git remote add origin https://github.com/user/project.gitТепер локальний репозиторій має віддалений репозиторій з іменем origin.
URL може мати HTTPS-формат:
https://github.com/user/project.gitабо SSH-формат:
git@github.com:user/project.gitПісля додавання перевірте налаштування:
git remote -vКоманда git remote add не завантажує файли й не надсилає коміти. Вона лише зберігає URL та ім’я віддаленого репозиторію в локальному репозиторії.
Наведена послідовність не потребує підключення до сервера, оскільки вона лише налаштовує URL:
mkdir remote-demo
cd remote-demo
git init
git remote add origin https://github.com/example/project.git
git remote
git remote -v
git remote get-url originПісля виконання команда git remote покаже:
originА git remote -v покаже URL для отримання та надсилання змін.
Якщо URL змінився або потрібно перейти з HTTPS на SSH, використовуйте:
git remote set-url <ім’я> <новий-URL>Наприклад:
git remote set-url origin git@github.com:user/project.gitПеревірити результат можна так:
git remote -vТепер URL матиме SSH-формат:
origin git@github.com:user/project.git (fetch)
origin git@github.com:user/project.git (push)Окремо змінити URL для надсилання змін можна за допомогою параметра --push:
git remote set-url --push origin git@github.com:user/project.gitЦе корисно, коли Git отримує зміни з одного URL, але надсилає їх на інший.
Переглянути URL для надсилання можна так:
git remote get-url --push originДля одного remote можна налаштувати кілька URL. Наприклад, додати ще один URL для надсилання:
git remote set-url --add --push origin git@github.com:backup/project.gitПереглянути всі URL для надсилання:
git remote get-url --all --push originУ більшості звичайних проєктів достатньо одного fetch URL і одного push URL.
Щоб змінити ім’я remote, використовуйте:
git remote rename <старе-ім’я> <нове-ім’я>Наприклад:
git remote rename origin githubПісля цього замість origin використовуватиметься github:
git remoteРезультат:
githubПерейменування змінює локальну назву віддаленого репозиторію. Сам репозиторій на сервері не перейменовується.
Після перейменування в командах потрібно використовувати нове ім’я:
git remote get-url githubЩоб видалити remote з локального репозиторію:
git remote remove <ім’я>Наприклад:
git remote remove originСкорочений варіант цієї команди:
git remote rm originПісля видалення перевірте список:
git remoteЯкщо інших remote немає, команда не виведе нічого.
Видалення remote:
не видаляє репозиторій із GitHub або іншого сервера;
не видаляє локальні файли;
не видаляє локальні коміти;
лише прибирає відповідне налаштування з поточного локального репозиторію.
mkdir git-remote-demo
cd git-remote-demo
git init
# Додаємо віддалений репозиторій
git remote add origin https://github.com/example/project.git
# Переглядаємо ім’я та URL
git remote
git remote -v
git remote get-url origin
# Змінюємо URL з HTTPS на SSH
git remote set-url origin git@github.com:example/project.git
# Перейменовуємо remote
git remote rename origin github
# Перевіряємо нове ім’я
git remote
git remote get-url github
# Видаляємо remote з локального репозиторію
git remote remove github
# Переконуємося, що список порожній
git remoteЦі команди не виконують обмін файлами із сервером. Вони змінюють локальні налаштування remote.
Якщо виконати:
git remote add origin https://github.com/user/project.gitколи origin уже додано, Git повідомить про помилку.
Спочатку перегляньте наявні remote:
git remote -vЯкщо потрібно змінити адресу, використовуйте:
git remote set-url origin https://github.com/user/new-project.gitКоманди працюють лише з іменем, яке справді налаштоване в репозиторії.
Наприклад, якщо існує origin, але виконати:
git remote get-url githubGit повідомить, що remote github не знайдено.
Перевірте імена:
git remoteЦе різні операції:
git remote rename origin githubзмінює ім’я remote, а
git remote set-url origin https://github.com/user/project.gitзмінює його адресу.
Команда:
git remote remove originне видаляє репозиторій із сервера. Вона лише забирає зв’язок із ним у поточному локальному репозиторії.
git remote показує імена віддалених репозиторіїв.
git remote -v показує їхні URL для fetch і push.
git remote add origin <URL> додає віддалений репозиторій.
git remote get-url origin показує його URL.
git remote set-url origin <URL> змінює URL.
git remote rename old new перейменовує remote.
git remote remove origin видаляє remote з локальної конфігурації.
Ім’я origin є поширеною домовленістю, але його можна змінити.
Операції з git remote змінюють локальні налаштування й самі по собі не передають коміти між репозиторіями.