Skip to main content

Що таке віддалений репозиторій у Git?

Віддалений репозиторій (remote repository) у Git - це копія Git-репозиторію, яка знаходиться не на вашому комп'ютері, а в іншому місці: на сервері в мережі, у корпоративній інфраструктурі або на хостингу на кшталт GitHub/GitLab/Bitbucket. Він потрібен не «для роботи Git» як такого (Git чудово працює локально), а для обміну змінами та спільної роботи, а також як центральне сховище/резервна копія.


Що саме зберігається у віддаленому репозиторії

Віддалений репозиторій зберігає:

  • коміти (історію змін),
  • гілки (посилання на коміти),
  • теги,
  • службові дані Git (об'єкти, посилання).

Важливо: віддалений репозиторій - це не «папка з файлами», а Git-база даних об'єктів, як і локальний репозиторій.

Найчастіше віддалений репозиторій на сервері зроблений у вигляді bare-репозиторію (без робочої директорії з розпакованими файлами). Це нормально: на сервері зазвичай не редагують файли напряму, а лише приймають/віддають коміти.


Чим відрізняється локальний репозиторій від віддаленого

Локальний репозиторій (у вас на ПК)

  • містить вашу локальну історію та гілки,
  • має робочу директорію (файли проекту),
  • ви робите коміти локально, навіть без інтернету.

Віддалений репозиторій (на сервері)

  • слугує точкою синхронізації між учасниками,
  • дозволяє публікувати зміни і забирати зміни інших,
  • часто використовується як «істина» проекту.

Git за своєю природою розподілений: у кожного розробника повноцінний репозиторій. Віддалений - це просто зручна спільна точка обміну.


Навіщо потрібен віддалений репозиторій

  1. Спільна робота
  • один розробник відправляє зміни, інший забирає і продовжує роботу.
  1. Обмін і синхронізація
  • публікація своїх гілок/комітів для команди.
  1. Резервне зберігання
  • якщо у вас зламався ноутбук, історія залишається на сервері.
  1. Процеси розробки
  • Pull/Merge Requests, code review, CI/CD, перевірки, релізи - усе це зазвичай зав'язано на віддалений репозиторій.
  1. Розподіл відповідальності
  • локально ви можете експериментувати, а у віддалений відправляєте тільки готове.

Як Git «бачить» віддалений репозиторій: remotes

У Git віддалені репозиторії налаштовуються як remote - це запис вигляду:

  • ім'я (часто origin)
  • URL (адреса, куди підключатися)

Приклад: коли ви робите git clone, Git автоматично створює remote з іменем origin, що вказує на джерело клонування.

Що таке origin

origin - це просто стандартне ім'я, а не «особливий сервер». Можна назвати remote як завгодно (upstream, company, backup).

Як підключаються до віддаленого репозиторію (протоколи)

Зазвичай використовуються:

  • HTTPS (зручно, токени/паролі)
  • SSH (зручно для розробників: ключі, менше мороки з токенами)
  • рідше: git:// та інші варіанти

Вибір протоколу впливає на спосіб автентифікації, але суть віддаленого репозиторію не змінюється.


Типовий робочий цикл із віддаленим репозиторієм

  1. Забрати актуальні зміни команди: fetch або pull
  2. Створити/оновити свою гілку
  3. Комітити локально
  4. Відправити гілку на сервер: push
  5. Відкрити Merge/Pull Request
  6. Після рев'ю - злити в основну гілку
  7. Усі інші забирають зміни (pull/fetch)

Важливі моменти і часті помилки

  • Віддалений репозиторій не оновлюється сам: зміни з'являються на сервері тільки після push.
  • pull може призвести до конфліктів, тому що він намагається одразу застосувати зміни.
  • fetch безпечніший, коли ви хочете спочатку подивитися, що змінилося, і тільки потім вирішувати, як інтегрувати.
  • «Видалити файл локально» ≠ «видалити на сервері»: на сервер це потрапить тільки після коміту і push.
  • Не можна «запушити» те, чого немає в комітах: push відправляє коміти, а не «стан папки».

Коротке підсумкове визначення

Віддалений репозиторій у Git - це розташований на сервері Git-репозиторій, який слугує точкою обміну та синхронізації: ви відправляєте в нього свої коміти (push) і отримуєте коміти інших (fetch/pull), забезпечуючи спільну роботу та резервне зберігання історії проекту.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.