Що таке віддалений репозиторій у Git?
Віддалений репозиторій (remote repository) у Git - це копія Git-репозиторію, яка знаходиться не на вашому комп'ютері, а в іншому місці: на сервері в мережі, у корпоративній інфраструктурі або на хостингу на кшталт GitHub/GitLab/Bitbucket. Він потрібен не «для роботи Git» як такого (Git чудово працює локально), а для обміну змінами та спільної роботи, а також як центральне сховище/резервна копія.
Що саме зберігається у віддаленому репозиторії
Віддалений репозиторій зберігає:
- коміти (історію змін),
- гілки (посилання на коміти),
- теги,
- службові дані Git (об'єкти, посилання).
Важливо: віддалений репозиторій - це не «папка з файлами», а Git-база даних об'єктів, як і локальний репозиторій.
Найчастіше віддалений репозиторій на сервері зроблений у вигляді bare-репозиторію (без робочої директорії з розпакованими файлами). Це нормально: на сервері зазвичай не редагують файли напряму, а лише приймають/віддають коміти.
Чим відрізняється локальний репозиторій від віддаленого
Локальний репозиторій (у вас на ПК)
- містить вашу локальну історію та гілки,
- має робочу директорію (файли проекту),
- ви робите коміти локально, навіть без інтернету.
Віддалений репозиторій (на сервері)
- слугує точкою синхронізації між учасниками,
- дозволяє публікувати зміни і забирати зміни інших,
- часто використовується як «істина» проекту.
Git за своєю природою розподілений: у кожного розробника повноцінний репозиторій. Віддалений - це просто зручна спільна точка обміну.
Навіщо потрібен віддалений репозиторій
- Спільна робота
- один розробник відправляє зміни, інший забирає і продовжує роботу.
- Обмін і синхронізація
- публікація своїх гілок/комітів для команди.
- Резервне зберігання
- якщо у вас зламався ноутбук, історія залишається на сервері.
- Процеси розробки
- Pull/Merge Requests, code review, CI/CD, перевірки, релізи - усе це зазвичай зав'язано на віддалений репозиторій.
- Розподіл відповідальності
- локально ви можете експериментувати, а у віддалений відправляєте тільки готове.
Як Git «бачить» віддалений репозиторій: remotes
У Git віддалені репозиторії налаштовуються як remote - це запис вигляду:
- ім'я (часто
origin) - URL (адреса, куди підключатися)
Приклад: коли ви робите git clone, Git автоматично створює remote з іменем origin, що вказує на джерело клонування.
Що таке origin
origin - це просто стандартне ім'я, а не «особливий сервер». Можна назвати remote як завгодно (upstream, company, backup).
Як підключаються до віддаленого репозиторію (протоколи)
Зазвичай використовуються:
- HTTPS (зручно, токени/паролі)
- SSH (зручно для розробників: ключі, менше мороки з токенами)
- рідше:
git://та інші варіанти
Вибір протоколу впливає на спосіб автентифікації, але суть віддаленого репозиторію не змінюється.
Типовий робочий цикл із віддаленим репозиторієм
- Забрати актуальні зміни команди:
fetchабоpull - Створити/оновити свою гілку
- Комітити локально
- Відправити гілку на сервер:
push - Відкрити Merge/Pull Request
- Після рев'ю - злити в основну гілку
- Усі інші забирають зміни (
pull/fetch)
Важливі моменти і часті помилки
- Віддалений репозиторій не оновлюється сам: зміни з'являються на сервері тільки після
push. pullможе призвести до конфліктів, тому що він намагається одразу застосувати зміни.fetchбезпечніший, коли ви хочете спочатку подивитися, що змінилося, і тільки потім вирішувати, як інтегрувати.- «Видалити файл локально» ≠ «видалити на сервері»: на сервер це потрапить тільки після коміту і
push. - Не можна «запушити» те, чого немає в комітах:
pushвідправляє коміти, а не «стан папки».
Коротке підсумкове визначення
Віддалений репозиторій у Git - це розташований на сервері Git-репозиторій, який слугує точкою обміну та синхронізації: ви відправляєте в нього свої коміти (push) і отримуєте коміти інших (fetch/pull), забезпечуючи спільну роботу та резервне зберігання історії проекту.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.