Віддалені репозиторії
Щоб мати можливість співпрацювати над будь-яким Git-проектом, вам потрібно знати, як керувати вашими віддаленими сховищами. Віддалені сховища - це версії вашого проекту, розміщені десь в інтернеті або мережі. Ви можете мати декілька таких сховищ, кожне з яких, як правило, доступне лише для читання або читання/запису. Керування віддаленими сховищами включає в себе вміння додавати віддалені сховища, видаляти віддалені сховища, які більше не є дійсними, керувати різними гілками і визначати їх як такі, що відстежуються чи ні, і багато іншого.
Перелік віддалених репозиторіїв
Щоб побачити, які віддалені сервери ви налаштували, ви можете виконати команду git remote
. Вона покаже короткі імена кожного вказаного вами віддаленого дескриптора. Якщо ви клонували свій репозиторій, ви маєте побачити принаймні origin
- ім’я за замовчуванням, яке Git дає серверу, з якого ви клонуєте:
$ git remote
origin
upstream
$ git remote -v
origin git@github.com:edu-python-course/edu-python-course.github.io (fetch)
origin git@github.com:edu-python-course/edu-python-course.github.io (push)
upstream git@github.com:PonomaryovVladyslav/PythonCources.git (fetch)
upstream git@github.com:PonomaryovVladyslav/PythonCources.git (push)
Це означає, що ми можемо досить легко отримувати внески від будь-якого з цих користувачів. Крім того, ми можемо мати дозвіл на проштовхування до одного або декількох з них.
Додавання віддалених репозиторіїв
Щоб додати новий віддалений репозиторій Git’у у вигляді короткого імені, на яке можна легко посилатися, виконайте git remote add <назва> <адреса>
:
$ git remote
origin
upstream
$ git remote add personal https://github.com/shorodilov/python-course
$ git remote
origin
upstream
personal
Тепер ви можете використовувати рядок «personal» в командному рядку замість повної URL-адреси. Гілка master
в «https://github.com/shorodilov/python-course» тепер доступна як personal/master
, тоді як скорочена назва тієї ж гілки в origin буде – origin/master
.
Отримання та витягування з віддаленого репозиторію
Щоб отримати дані з віддаленого проекту, ви можете виконати команду git fetch
. Команда звернеться до цього віддаленого проекту і витягне всю інформацію з нього, якої ви ще не маєте. Після цього ви матимете посилання на всі гілки з цього віддаленого проекту, які ви можете об’єднати або переглянути у будь-який час.
$ git fetch <remote>
Якщо вашу поточну гілку налаштовано на відстеження віддаленої гілки, ви можете скористатися командою git pull
для автоматичного отримання і подальшого об’єднання цієї віддаленої гілки у вашу поточну гілку. За замовчуванням, команда git clone
автоматично налаштовує вашу локальну гілку master
на відстеження віддаленої гілки master
(або будь-якої іншої віддаленої гілки за замовчуванням).
Нове в версії 2.27: Починаючи з версії 2.27, git pull
видаватиме попередження, якщо змінну pull.rebase
не встановлено. Git продовжуватиме видавати попередження, доки ви не встановите змінну.
Якщо ви хочете отримати поведінку Git’а за замовчуванням (перемотування вперед, якщо можливо, інакше створіть комміт злиття): git config --global pull.rebase "false"
.
Якщо ви хочете перебазувати базу при витягуванні: git config --global pull.rebase "true"
.
Відправка до віддаленого репозиторію
Коли ваш проект знаходиться на етапі, яким ви хочете поділитися, вам потрібно перемістити його вгору за течією. Команда для цього проста: git push <віддалений> <гілка>
.
$ git push origin master
Ця команда працює тільки якщо ви клонували з сервера, до якого у вас є доступ на запис, і якщо в цей час ніхто не робив поштовх. Якщо ви клонуєте одночасно з кимось іншим, і він зробить поштовх вище за течією, а потім ви, ваш поштовх буде справедливо відхилено. Вам доведеться спочатку отримати їхню роботу і включити її до своєї, перш ніж вам дозволять проштовхувати.
Переміщення нової гілки до віддаленого репозиторію
Якщо ви створили локальну гілку для якихось конкретних потреб і хочете надати до неї доступ, вам потрібно налаштувати трек для цієї гілки. Це можна зробити за допомогою git push --set-upstream origin <віддалена_гілка>
. Це створить нову віддалену гілку і налаштує трек до вашої поточної локальної гілки. Для цієї команди існує комбінація клавіш: git push -u origin <віддалена_гілка>
.
Перевірка віддаленого репозиторію
Якщо ви хочете побачити більше інформації про певний віддалений сервер, скористайтеся командою git remote show <remote
.
$ git remote show origin
* remote origin
Fetch URL: git@github.com:edu-python-course/edu-python-course.github.io
Push URL: git@github.com:edu-python-course/edu-python-course.github.io
HEAD branch: master
Remote branches:
devel tracked
feature/contributing tracked
feature/libms tracked
feature/pdf-builder tracked
feature/translations tracked
feature/vcs tracked
gh-pages tracked
master tracked
refs/remotes/origin/blog-project stale (use 'git remote prune' to remove)
refs/remotes/origin/feature/homepage stale (use 'git remote prune' to remove)
refs/remotes/origin/feature/patterns stale (use 'git remote prune' to remove)
Local branches configured for 'git pull':
devel merges with remote devel
feature/contributing merges with remote feature/contributing
feature/intro-intl merges with remote feature/intro-intl
feature/libms merges with remote feature/libms
feature/pdf-builder merges with remote feature/pdf-builder
feature/translations merges with remote feature/translations
feature/vcs merges with remote feature/vcs
master merges with remote master
Local refs configured for 'git push':
devel pushes to devel (up to date)
feature/contributing pushes to feature/contributing (up to date)
feature/libms pushes to feature/libms (up to date)
feature/pdf-builder pushes to feature/pdf-builder (up to date)
feature/translations pushes to feature/translations (up to date)
feature/vcs pushes to feature/vcs (fast-forwardable)
master pushes to master (up to date)
Вона показує URL-адресу віддаленого сховища, а також інформацію про відстежувану гілку. Команда корисно повідомляє, що якщо ви перебуваєте на гілці master
і виконаєте git pull
, вона автоматично об’єднає гілку master
віддаленого сховища з локальною гілкою після того, як її буде витягнуто. Також буде показано список усіх віддалених посилань, які було витягнуто.