Гілки та хірургія

Гілки, віддалені репозиторії та бічна панель

Одна бічна панель — з можливістю перевпорядкування й пошуку — тримає гілки, віддалені репозиторії, теги, стеші, робочі дерева та підмодулі. Кожен розділ можна сховати або переставити (Налаштування → Розкладка), а поле фільтра діє на всі одразу. Які розділи й теки ви тримаєте розгорнутими чи згорнутими, запам'ятовується для кожного репозиторію — і переживає перезапуск.

Бічна панель — стос панелей, не довгий список. Відкритий розділ бере висоту, яку залишають згорнуті — ті сидять нижче рядками заголовків. Відкрийте кілька — вони ділять цю висоту порівну, кожна зі своєю прокруткою. Розділ із сотнями тегів прокручується всередині своєї панелі, інші заголовки лишаються на місці, тож нічого, що хочеться натиснути, не з'їжджає з екрана. Відкрийте більше, ніж вміщається, і всі панелі стискаються разом до заголовка — сама бічна панель ніколи не прокручується.

Лише Локальні стартує відкритим у репозиторії, який ви ще не розставили; кожен інший розділ стартує як заголовок. Розділ, що містить понад 300 посилань, усе одно починається згорнутим. У репозиторії з тисячами ніколи не видалених віддалених гілок інакше всі вони опинилися б на екрані, хоча їх ніхто не просив; розгорніть його один раз — і цей вибір запам'ятається, як і будь-який інший.

Бічна панель із закріпленими гілками, що тримаються вгорі

Гілки

Створення, чекаут, перейменування та видалення — і локальних, і віддалених. Рядки гілок показують:

  • ↑попереду / ↓позаду відносно їхнього upstream,
  • значки присутності по кожному віддаленому репозиторію (де саме є ця гілка),
  • крапку ризику після сканування радаром конфліктів,
  • позначку ⟳, коли віддалений репозиторій переписав історію.

Гілки, у назвах яких є /, автоматично згортаються в теки. Префікс з однією дитиною все одно тека — release/1.2.3 це release з 1.2.3 усередині — тож додати release/1.2.4 пізніше не перебудовує дерево. Ланцюжок тек з однією дитиною стискається в один заголовок (dependabot/npm_and_yarn). Заголовки тек мають знак теки; сама ref — гілки, віддаленої чи тега.

Правий клік по заголовку теки діє на всю групу: Видалити всі гілки в feature (4 гілок) прибирає весь її вміст після одного підтвердження, яке перелічує саме ті гілки, що зникнуть — поточна гілка виключена. Те саме меню є на теках віддалених гілок, там видалення відбувається з віддаленого репозиторію.

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

Дії з локальною гілкою у випадному списку панелі інструментів

Дії з віддаленою гілкою у випадному списку панелі інструментів

Рядки виділяються групами, як файли: клік із ⌘/Ctrl перемикає рядок, клік із Shift виділяє діапазон, а Shift+↑/↓ розширює виділення від останнього клікнутого рядка. Правий клік по виділенню відкриває групове меню — Видалити 4 гілок — з підтвердженням, де наведено повний список. Ті самі жести працюють на віддалених гілках, тегах і стешах.

Назви гілок із косими рисками, згорнуті в дерево

Перейменування гілки

Гілка, названа fix три дні тому, — це гілка, яку сьогодні ніхто не впізнає. Перейменуйте її там, де ви помітили проблему:

Де Як
Бічна панель Правий клік на гілці → Перейменувати…
Випадний список гілок на панелі Правий клік на гілці → Перейменувати…
Граф комітів Правий клік на значку гілки біля коміта → Перейменувати…
Палітра команд ⌘/Ctrl+K → Перейменувати гілку (діє на поточну гілку)

Локальне перейменування — це git branch -m: миттєво і скасовується через ⌘Z; запис скасування повертає стару назву. Перейменування гілки, на якій ви стоїте, залишає вас на ній.

Якщо гілка стежить за віддаленою, меню пропонує також Перейменувати (разом з віддаленою)…: перейменувати локально, надіслати нову назву й видалити стару на сервері. Це не скасовується — старої віддаленої гілки більше немає, і всім, хто її мав, доведеться перемкнутися. На значку в графі варіант з'являється лише тоді, коли гілка стежить рівно за одним віддаленим репозиторієм; якщо їх кілька, оберіть гілку в бічній панелі, щоб upstream був однозначним.

Обмеження: Gitcito не переписує нічого, що посилалося на стару назву — відкриті pull request'и й далі вказують на гілку, з якою їх створено, а правила CI за шаблоном назви перестають збігатися. Перейменування гілки, що вибрана в іншому worktree, завершиться помилкою, і git про це скаже.

Пул і пуш гілки, на якій ви не стоїте

Правий клік на будь-якій локальній гілці дає пункти Стягнути й Надіслати, що діють саме на цю гілку, а не на поточну, — не треба перемикатися, щоб підтягнути три гілки. Див. фетч, пул і пуш.

Закріплені гілки

Позначайте зірочкою гілки, до яких ви постійно повертаєтеся: наведіть курсор на рядок і натисніть ★ або клацніть правою кнопкою → Закріпити гілку. Вони з’являються в групі Закріплені вгорі розділу локальних гілок, запам’ятовуються для кожного репозиторію окремо й при цьому лишаються на своєму звичайному місці нижче.

Чекаут віддаленої гілки

Подвійний клік на віддаленій гілці створює локальну, яка її відстежує. Якщо локальна гілка з такою назвою вже існує й розійшлася, Gitcito питає, як їх узгодити — ребейз, злиття чи скидання, — і пропонує спершу зробити резервну копію гілки.

Запит про розбіжність гілок: ребейз, злиття чи скидання, з опцією резервної копії

Коли локальна гілка позаду

Під час перемикання її перемотує (fast-forward) до вершини віддаленої. Брудне робоче дерево спершу йде в іменований стеш і повертається після оновлення, тож локальні правки його не перериають.

Коли локальна гілка попереду

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

Вибір Що станеться
Перемкнутися на локальну Переходить на локальну гілку, коміти лишаються цілими. Те, що мовчки робить будь-який інший клієнт.
Скидання (soft) Повертає гілку до вершини віддаленої; зміни комітів лишаються в індексі, готові до нового коміту.
Скидання (mixed) Те саме переміщення, зміни лишаються поза індексом у робочому дереві.
Скидання (hard) Відкидає коміти разом з їхніми змінами.

Діалог гілки, що попереду: перемкнутися на локальну або скинути soft, mixed, hard

Залиште позначку Спочатку створити резервну гілку, і вершина локальної гілки збережеться як backup/<гілка>-<мітка-часу> до будь-якого переміщення — навіть жорстке скидання тоді скасовується одним перемиканням. Скидання також потрапляє до стека скасувань (⌘Z), але лише до закриття репозиторію; резервна гілка живе довше.

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

Ремоути

Розділ «Ремоути» бічної панелі — там їх додають, редагують, фетчать і видаляють. Фетч, пул або пуш у репозиторії без жодного відкриває той самий діалог Додати віддалений репозиторій — вставте URL або створіть репо на хості — замість того щоб нічого не робити. Див. фетч, пул і пуш.

Дивіться також: Злиття та ребейз · Робочі дерева

Покращити цей переклад на GitHub