Ветки, удалённые репозитории и боковая панель
Одна боковая панель — с перестановкой разделов и поиском — держит ветки, удалённые репозитории, теги, стеши, рабочие деревья и сабмодули. Любой раздел можно спрятать или переставить (Настройки → Раскладка), а поле фильтра действует на все сразу. Какие разделы и папки вы держите развёрнутыми или свёрнутыми, запоминается для каждого репозитория — и переживает перезапуск.
Боковая панель — стопка панелей, не длинный список. Открытый раздел берёт высоту, которую оставляют свёрнутые — те сидят ниже строками заголовков. Откройте несколько — они делят эту высоту поровну, каждая со своей прокруткой. Раздел с сотнями тегов прокручивается внутри своей панели, остальные заголовки остаются на месте, так что ничего, что хочется нажать, не уезжает с экрана. Откройте больше, чем влезает, и все панели сжимаются вместе до заголовка — сама боковая панель никогда не прокручивается.
Только Локальные стартует открытым в репозитории, который вы ещё не расставили; каждый другой раздел стартует как заголовок. Раздел, содержащий более 300 ссылок, всё равно открывается свёрнутым. В репозитории с тысячами никогда не удалявшихся удалённых веток иначе все они оказались бы на экране, хотя их никто не запрашивал; разверните его один раз — и выбор запомнится, как и любой другой.

Ветки
Создать, переключиться, переименовать и удалить — как локальные, так и удалённые. В строках веток видно:
- ↑впереди / ↓позади относительно своего upstream,
- бейджи присутствия по удалённым репозиториям (на каких remote есть эта ветка),
- точку риска после сканирования радаром конфликтов,
- маркер ⟳, когда удалённый репозиторий переписал историю.
Ветки с / в именах автоматически сворачиваются в раскрывающиеся папки.
Префикс с одним потомком всё равно папка — release/1.2.3 это release с
1.2.3 внутри — поэтому release/1.2.4 позже не перестраивает дерево. Цепочка
папок с одним потомком сжимается в один заголовок (dependabot/npm_and_yarn).
У заголовков папок значок папки; у самой ссылки — ветки, удалённой или тега.
Правый клик по заголовку папки действует на всю группу: Удалить все ветки в
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) | Отбрасывает коммиты вместе с их изменениями. |

Оставьте флажок Сначала создать резервную ветку, и вершина локальной ветки
сохранится как backup/<ветка>-<метка-времени> до любого перемещения — даже
жёсткий сброс тогда отменяется одним переключением. Сброс также попадает в стек
отмены (⌘Z), но только до закрытия репозитория; резервная ветка живёт дольше.
Ограничения: диалог сравнивает ветку только со свежеполученной отслеживаемой ссылкой, поэтому удалённый репозиторий, отказавший в fetch (нет сети, неверные учётные данные), сравнивается с последней известной вершиной. Он ничего не говорит о том, хороши ли ваши коммиты, — лишь о том, что они есть здесь и нет там.
Удалённые репозитории
Раздел «Удалённые» боковой панели — там их добавляют, правят, фетчат и удаляют. Фетч, пул или пуш в репозитории без единого открывает тот же диалог Добавить удалённый репозиторий — вставьте URL или создайте репо на хосте — вместо того чтобы ничего не делать. См. фетч, пул и пуш.
См. также: Слияние и ребейз · Рабочие деревья