Фетч, пул і пуш
Пул
Три режими, які обираються з випадного списку: типовий, лише перемотування вперед або ребейз. Локальні зміни автоматично ховаються в стеш і повертаються назад навколо пулу, тож брудне робоче дерево вас не блокує.
Гілка, яка нічого не відстежує
git pull — це фетч, а за ним злиття, і злиттю потрібно знати, у що зливати:
upstream гілки. У гілки, створеної локально або взятої без відстеження, його
немає. Фетч усе одно проходить, повз пролітає довгий список оновлених рефів
origin/*, а потім git зупиняється на "There is no tracking information for the
current branch". Нічого не було отримано і нічого не зламалося: другій половині
просто не було куди зливати.
Gitcito читає цю помилку й пропонує ремонт кнопкою, обираючи яку — за тим, чи віддалений уже має цю гілку:
| Вона є на віддаленому | Пов’язати й отримати — призначає upstream <віддалений>/<гілка> і потім виконує той pull, який ви просили. Скасовно через ⌘Z, що знову знімає відстеження. |
| Її там ще немає | Надіслати гілку — звичайний push, який попутно призначає upstream. |
Пропонується origin, якщо він є, інакше перший віддалений зі списку. Який із
випадків ваш, читається з рефів відстеження, а не з мережі, — тож відповідь
відображає щойно виконаний фетч.
Пуш
Примусовий пуш завжди використовує --force-with-lease — безпечний варіант,
який відмовляється працювати, якщо віддалений репозиторій зрушив відтоді, як
ви востаннє на нього дивилися. Примусовий пуш захищеної гілки просить
підтвердження (список — у шестерні налаштувань репозиторію).

Немає ремоутів
Пуш, пул і фетч потребують куди йти. Репозиторій без жодного — свіжий
git init, клон, у якого прибрали origin — раніше лишав ці кнопки без дії
або вважав порожній фетч успіхом. Тепер вони відкривають Додати віддалений
репозиторій, з попередженням: вставте URL або створіть репо на хості.
Додавання завершує почату дію: пуш публікує поточну гілку, пул фетчить і тоді
робить пул, фетч лише фетчить.
Фоновий автофетч мовчить, коли фетчити нічого. Діалог за таймером він не відкриває.
Коли ремоутів більше ніж один
Кнопка Запушити цілиться в upstream цієї гілки. Стрілка поруч із нею пропонує ще й таке, щойно в репозиторії з’являється більш ніж один ремоут:
| Запушити в один ремоут | Виберіть один віддалений репозиторій — форк, дзеркало, ціль розгортання |
| Запушити в усі N ремоутів | По одному пушу на ремоут, по черзі |
| Запушити всі теги в | git push <remote> --tags, усі локальні теги за раз |
Ті самі дві дії є й у власному рядку кожного ремоута на бічній панелі — а це зазвичай саме те місце, де ви перебуваєте, коли постає це питання.
Відмова не скасовує решти. Пуш у форк і в його upstream — це рівно той випадок, коли один бік відмовляє, а другий усе одно має пройти, тож кожен ремоут звітує окремо: успіхи називаються поіменно в одному сповіщенні, а кожна невдача отримує власне, з поясненням від git.
Upstream гілки встановлює лише перший ремоут зі списку. У гілки один upstream, і останній ремоут, куди ви запушили, — не обов’язково той, за яким ви хочете, щоб вона стежила.
Обидва шляхи проходять ті самі перевірки, що й звичайний пуш, — підтвердження захищеної гілки та сторож секретів. Публікація у два ремоути — це подвійна експозиція, а не половина обережності.
Гілки, на яких ви не стоїте
git pull рухає лише HEAD — тому більшість клієнтів вимагає спершу перемкнутися
на гілку. Gitcito не вимагає: правий клік на будь-якій локальній гілці — на
бічній панелі або на її значку в графі — дає Стягнути <гілку> і
Надіслати <гілку>, і обидва діють саме на неї.
Стягнути <гілку> |
Перемотує локальне посилання до його upstream, без чекауту. Робоче дерево лишається недоторканим. Скасовується через ⌘Z — скасування повертає гілку на попереднє місце. |
Надіслати <гілку> |
Звичайний пуш цієї гілки, з тими самими перевірками захищеної гілки та секретів, що й кнопка на панелі. |
Пул недоступний для гілки, яка нічого не відстежує — немає звідки стягувати. На гілці, де ви стоїте, обидва зводяться до звичайного пулу, який оновлює й робоче дерево.
Обмеження, яке варто знати: гілка, що розійшлася зі своїм upstream, відхиляється — з повідомленням про це. Узгодити розходження означає merge або rebase, а обом потрібне робоче дерево, тож цей випадок і далі коштує чекауту. Примусове надсилання гілки, на якій ви не стоїте, пропонується, коли віддалений репозиторій відхилив пуш; шлях «стягнути й повторити» — ні, з тієї ж причини.
Фетч
У Отримати є власна кнопка на панелі інструментів, поруч із Пул. Вона отримує
з усіх віддалених і чистить застарілі, тож ваші рефи origin/* і всі лічильники
попереду/позаду стають актуальними — і не чіпає ні вашу гілку, ні робоче дерево.
Це та кнопка, коли хочеться побачити, що зробили інші, не рухаючи власної
роботи.
Є також фоновий автофетч з інтервалом, який ви задаєте (Налаштування →
Загальні). Наведіть курсор на кнопку «Отримати» — вік проступить під нею, 4 хв
тому, бурштиновим, якщо фетч старший за п'ятнадцять хвилин. Він ніколи не займає
місця на панелі, бо відповідає на питання, яке ставлять лише тягнучись до кнопки.
Читається з FETCH_HEAD, тож git fetch, запущений у терміналі, рахується
нарівні із запущеним тут.
Фетч, який знайшов переписану історію, каже про це прямо: сповіщення називає гілку, а її рядок отримує маркер, що відкриває що змінилося відтоді рівно на тому коміті, на який вона вказувала раніше.
Багато репозиторіїв одночасно
- Вкладка групи може зафетчити все / зробити пул для всього свого піддерева.
- Центр керування робить це по всьому робочому простору й може підтягнути лише ті репозиторії, які справді відстають.
Ремоути
Додавати, редагувати, видаляти та фетчити окремі ремоути можна з бічної панелі. Рядки гілок несуть значки присутності по кожному ремоуту, тож ви одним поглядом бачите, у яких віддалених репозиторіях є копія гілки.
Фетч, пул або пуш без ремоутів відкриває той самий діалог «Додати віддалений репозиторій», замість успішно нічого не зробити. Див. фетч, пул і пуш.
Дивіться також: Центр керування · Хостинг і пул-реквести