Пошук уроків, статей та іншого контенту
Як локальний репозиторій синхронізується з віддаленою копією на GitHub чи іншому сервісі.
Remote — збережене посилання на іншу копію того самого репозиторію, зазвичай розміщену на сервісі хостингу (GitHub, GitLab). За конвенцією основний remote називають origin — саме звідти клонований репозиторій і куди типово надсилають зміни:
git remote -v
# origin https://github.com/user/project.git (fetch)
# origin https://github.com/user/project.git (push)git clone https://github.com/user/project.gitgit push origin feature/login-form # відправити коміти цієї гілки на origin
git push -u origin feature/login-form # -u запам'ятовує зв'язок, далі достатньо просто "git push"git fetch завантажує нові коміти з remote локально, не змінюючи поточну робочу гілку — безпечний спосіб побачити, що з'явилось на remote, перш ніж вирішувати, що з цим робити. git pull — це git fetch, одразу за яким слідує git merge (чи rebase, залежно від конфігурації) отриманих змін у поточну гілку:
git fetch origin # завантажити нові коміти, не займаючи локальну гілку
git log origin/main # переглянути, що нового на remote, перед злиттям
git pull origin main # fetch + merge за один крокgit pull зручний і найчастіше використовуваний за замовчуванням, але git fetch дає більше контролю — корисно, коли хочеться спершу переглянути вхідні зміни (наприклад, git log origin/main чи git diff main origin/main), перш ніж зливати їх у власну роботу.
Локальна гілка може бути «прив'язана» до конкретної віддаленої гілки (upstream) — тоді прості git push і git pull без явного зазначення remote/гілки автоматично знають, куди й звідки синхронізуватись. Прапорець -u (--set-upstream) при першому push встановлює цей зв'язок.
git push без попереднього git pull, коли на remote вже є нові коміти, — Git відхилить push, вимагаючи спершу синхронізуватись, щоб не втратити чужу роботу.
Плутати git fetch і git pull, очікуючи, що fetch одразу оновить робочу директорію, — fetch лише завантажує дані, не змінюючи поточний стан гілки.
git push --force на спільну гілку, щоб «продавити» власні зміни попри конфлікт, — переписує віддалену історію так само небезпечно, як rebase чи reset спільної гілки, і потенційно знищує роботу інших учасників.
Remote (типово origin) — посилання на віддалену копію репозиторію; git push відправляє локальні коміти туди, git fetch безпечно завантажує чужі коміти без зміни поточної гілки, git pull — це fetch, одразу за яким автоматично йде merge. Upstream tracking (-u при першому push) дозволяє надалі використовувати push/pull без явного зазначення remote і гілки щоразу.