7. Віддалені репозиторії та GitHub

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

Досі твій репозиторій жив в одному місці — на твоєму комп'ютері.

 — це Git-репозиторій, який зберігається деінде, зазвичай на сервісі на кшталт GitHub. Це все той самий Git-репозиторій, просто доступний через мережу, а не лише на твоїй машині.

Для проєкту, який ми будуємо в курсі, локальний репозиторій уже існує. Коли ми створимо для нього репозиторій на GitHub, ці два репозиторії ще нічого не знатимуть один про одного. Щоб вони запрацювали разом, ми підключимо локальний репозиторій до URL віддаленого.

Remote repository часто скорочують просто до remote. Коли хтось каже «запуш на remote», це означає «відправ коміти в той віддалений Git-репозиторій».

Ось шлях, яким ми пройдемо в цьому розділі:

  1. Локальний репозиторій на комп'ютері вже є. У ньому — коміти, які ми встигли зробити.

  2. Ми створимо порожній репозиторій на GitHub. Це дасть нам місце в інтернеті, де може зберігатися копія історії нашого проєкту.

  3. Ми з'єднаємо обидва репозиторії, додавши URL із GitHub як remote. Перший remote зазвичай називають origin.

  4. Коли з'єднання з'явиться, ми зможемо відправити (push) локальні коміти в той порожній репозиторій на GitHub.

  5. Пізніше, якщо в репозиторії на GitHub з'являться нові коміти, яких ще немає локально, ми зможемо забрати (pull) їх назад.

Крок зі з'єднанням — ключовий. Поки remote не додано, локальний репозиторій не знає, в який саме репозиторій на GitHub відправляти коміти.

Є ще один поширений стартовий сценарій —

.

Клонують тоді, коли проєкт уже існує на GitHub і потрібно отримати свою першу локальну копію. Замість починати з git init, ти клонуєш віддалений репозиторій, і Git створює для тебе вже підключений локальний репозиторій. Далі працюєш із ним як зазвичай.

В цьому курсі ми йдемо у зворотному напрямку: почали локально, а тепер підключаємо цей локальний репозиторій до GitHub.

Із віддаленим репозиторієм можна:

  • Мати резервну копію роботи: якщо з комп'ютером щось станеться, коміти нікуди не подінуться — вони на віддаленому сервері.

  • Працювати з кількох машин: можна запушити з одного комп'ютера і забрати ті самі коміти на іншому.

  • Ділитися роботою з командою: віддалений репозиторій стає спільним місцем, де люди обмінюються комітами.

Якщо віддалений репозиторій твій, ти вирішуєш, хто може його читати, а хто — змінювати. Наприклад, проєкт із відкритим кодом може дозволяти клонувати репозиторій будь-кому, але пушити коміти в основний репозиторій можуть лише обрані люди, яких називають мейнтейнерами (maintainers).

GitHub також дає змогу зробити

репозиторію. Форк — це окрема серверна копія під акаунтом іншої людини. Так можна експериментувати у власній копії, не змінюючи оригінальний репозиторій.

Два слова легко сплутати:

  • Клонувати: зробити локальну копію віддаленого репозиторію на своєму комп'ютері.

  • Форкнути: зробити серверну копію чужого віддаленого репозиторію під своїм акаунтом. Потім зазвичай клонують саме форк, а не оригінальний репозиторій. Оновлення з оригінального репозиторію не з'являться у твоєму форку самі — їх треба явно підтягнути.

Якщо хтось знаходить баг у проєкті з відкритим кодом, можна форкнути проєкт, виправити помилку у своєму форку, а потім запропонувати виправлення,

. Якщо мейнтейнерам зміна сподобається, вони можуть додати її в оригінальний репозиторій.

Саме так розробляються проєкти на кшталт Linux, .NET, Python і VS Code. Увесь цей робочий процес тобі поки не потрібен, але корисно знати, які можливості відкриває GitHub.

Тож створімо свій

GitHub — популярна платформа для хостингу віддалених Git-репозиторіїв. У цьому розділі ми створимо репозиторій на GitHub, з'єднаємо його з локальним і відправимо туди наші коміти.

Подивімося, як створити новий репозиторій на GitHub.

Next step
Хочеш спробувати Сюжетний режим?

Проходь курс так, як він і задуманий: маленькими порціями, у сфокусованому лінійному порядку, поступово відкриваючи статті Gitopedia. Будь-коли можна продовжити зі справжнім Git у VS Code/Cursor/Antigravity/Windsurf.

Сюжетний режим
БЕЗКОШТОВНО
але потрібен вхід