Перейти до вмісту

Редагування історії

У jj переписування історії — щоденна робота, а не ризикований аварійний вихід. Коли ти змінюєш коміт, Wyrm сам робить rebase усього, що лежить поверх нього. Кожна дія нижче — одна операція, тож undo її скасовує.

Типово jj вважає твій trunk (наприклад, main@origin) і теги незмінними (immutable) і відмовляється їх переписувати. Перемикач 🛡 знімає це обмеження, коли ти справді цього хочеш.

Більшість команд — у контекстному меню коміту в журналі, у розділі Операції з комітами. Рідше вживані — у розділі Більше.

Вибери коміт і вибери Розділити…. У вікні Розділити коміт познач файли, які мають піти в перший коміт, або відкрий фрагменти файлу й вибери окремі фрагменти. Клацни Розділити. Решта залишиться в другому коміті зверху.

Розділити можна й прямо з diff: у заголовку кожного фрагмента є кнопка Розділити.

  • Squash до батьківського (S): влити вибраний коміт у його батьківський.
  • Squash в інший коміт: вибери коміт, потім клацни правою кнопкою коміт, у який хочеш його влити, і вибери Squash … у ….
  • Кілька комітів одразу: вибери ряд сусідніх комітів і вибери Squash N комітів разом.
  • Squash з параметрами… (у розділі Більше) може зберегти спорожнілий коміт або залишити лише опис батьківського.

Виправив у робочій копії кілька речей, які належать до старіших комітів? Вибери @ і вибери Поглинути в предків (A). jj перенесе кожен змінений рядок у коміт, який торкався його останнім, а все, що не вдасться розмістити, залишить в @.

Робота з фрагментами й окремими рядками

Section titled “Робота з фрагментами й окремими рядками”

У diff будь-якого коміту заголовок кожного фрагмента має чотири кнопки:

  • Squash ↑: перенести фрагмент у батьківський коміт.
  • Перемістити…: перенести його в будь-який інший коміт.
  • Розділити: виділити його в окремий коміт.
  • Відхилити: прибрати його з цього коміту, щоб файл там повернувся до версії батьківського.

Щоб діяти з кількома фрагментами, познач їх (Space позначає фрагмент); ⇧-клік вибирає окремі рядки. Панель над diff показує, скільки фрагментів і рядків вибрано. Коли є вибір, ⇧S робить його squash, а ⌫ відхиляє. Перед відхиленням Wyrm перепитує. Для двійкових, перейменованих або конфліктних файлів доступні лише дії з файлом цілком.

Контекстне меню фрагмента пропонує ті самі дії: Squash фрагмента до батьківського, Відхилити зміни фрагмента, Перемістити фрагмент до….

Переміщення цілих файлів між комітами

Section titled “Переміщення цілих файлів між комітами”

На панелі ревізії вибери один або кілька файлів і скористайся Squash у батьківську, Перемістити до… або Відновити файли. Перемістити до… відкриває Перемістити зміни до…: введи Цільова ревізія (bookmark, change ID або revset) і клацни Перемістити.

Також можна перетягнути файл чи фрагмент на коміт у журналі й вибрати Squash сюди.

Редагування або видалення файлу в будь-якій ревізії

Section titled “Редагування або видалення файлу в будь-якій ревізії”

Клацни правою кнопкою файл серед змін коміту:

  • Редагувати в цій ревізії… відкриває файл таким, яким він є в цьому коміті. Збережи через ⌘S: Wyrm перепише цей коміт і зробить rebase його нащадків на нього.
  • Видалити з цієї ревізії… видаляє файл лише з цього коміту; для пізніших комітів робиться rebase.

Панель файлів має ці самі дві дії.

Зміна порядку, rebase та інше

Section titled “Зміна порядку, rebase та інше”
  • Змінити порядок (R, коли вибрано два чи більше комітів): перетягни їх у потрібному порядку й клацни Застосувати порядок.
  • Перетягування: перетягни коміт на інший, щоб виконати Rebase сюди, на лінію між двома комітами, щоб Вставити сюди, або на merge-коміт, щоб додати його як батьківський.
  • Rebase на інший коміт: вибери коміт, клацни правою кнопкою цільовий і вибери Rebase … на ….
  • Відновити з батьківського, Дублювати, Відкат (revert) і Відкинути… — у тому самому контекстному меню. Більше додає Змінити батьків…, Спростити батьків, Відновити з… та інші варіанти.

Якщо переписування створює конфлікт, jj записує його в коміт, а не зупиняє тебе. Дивись Вирішення конфліктів.