Редагування історії
У jj переписування історії — щоденна робота, а не ризикований аварійний вихід. Коли ти змінюєш коміт, Wyrm сам робить rebase усього, що лежить поверх нього. Кожна дія нижче — одна операція, тож undo її скасовує.
Типово jj вважає твій trunk (наприклад, main@origin) і теги незмінними (immutable) і відмовляється їх переписувати. Перемикач 🛡 знімає це обмеження, коли ти справді цього хочеш.
Більшість команд — у контекстному меню коміту в журналі, у розділі Операції з комітами. Рідше вживані — у розділі Більше.
Розділити коміт
Section titled “Розділити коміт”Вибери коміт і вибери Розділити…. У вікні Розділити коміт познач файли, які мають піти в перший коміт, або відкрий фрагменти файлу й вибери окремі фрагменти. Клацни Розділити. Решта залишиться в другому коміті зверху.
Розділити можна й прямо з diff: у заголовку кожного фрагмента є кнопка Розділити.
Squash
Section titled “Squash”- Squash до батьківського (
S): влити вибраний коміт у його батьківський. - Squash в інший коміт: вибери коміт, потім клацни правою кнопкою коміт, у який хочеш його влити, і вибери Squash … у ….
- Кілька комітів одразу: вибери ряд сусідніх комітів і вибери Squash N комітів разом.
- Squash з параметрами… (у розділі Більше) може зберегти спорожнілий коміт або залишити лише опис батьківського.
Absorb
Section titled “Absorb”Виправив у робочій копії кілька речей, які належать до старіших комітів? Вибери @ і вибери Поглинути в предків (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 записує його в коміт, а не зупиняє тебе. Дивись Вирішення конфліктів.