Вот приведённый в порядок Markdown файл:

***

# 📚 Шпаргалка по Jujutsu (jj)

## Основные концепции

**jj** — это система контроля версий, которая отличается от Git философией. Вместо веток используются **bookmarks** (закладки), вместо staging area — автоматическое отслеживание.

| Концепция | Описание |
|-----------|---------|
| `@` | Текущий рабочий коммит (working copy) |
| `@-` | Родитель текущего коммита |
| Bookmark | Закладка на коммит (аналог Git ветви) |
| DAG | Направленный ациклический граф — вся история видна одновременно |

## Базовые команды

```bash
# Инициализация
jj git init                    # Инициализировать jj в Git репозитории

# Просмотр истории
jj log                         # Показать историю
jj log --graph                 # С визуализацией
jj log --graph --all           # Вся история со всеми ветками
jj status                      # Статус текущего коммита

# Создание коммитов
jj new                         # Создать новый коммит на основе текущего
jj new -m "description"        # С описанием
jj new COMMIT_ID               # Создать коммит на основе конкретного

# Редактирование
jj edit COMMIT_ID              # "Включить" коммит для редактирования
jj describe -m "new message"   # Изменить описание текущего коммита
jj new HEAD                    # Создать коммит от HEAD
```

## Работа с закладками

```bash
# Создание и удаление
jj bookmark create branch-name              # Создать закладку на текущий коммит
jj bookmark create branch-name -r COMMIT_ID # На конкретный коммит
jj bookmark delete branch-name              # Удалить закладку
jj bookmark list                            # Список всех закладок

# Перемещение закладок
jj bookmark set main -r COMMIT_ID           # Переместить main на коммит
jj bookmark set main -r ready               # Переместить на bookmark ready

# Отслеживание удалённых закладок
jj bookmark track main@origin               # Импортировать удалённую закладку
```

## Слияние и перебазирование

```bash
# Rebase (перебазирование)
jj rebase -r @ -d main         # Перебазировать текущий коммит на main
jj rebase -b ready -d main     # Перебазировать ветку ready на main

# Squash (объединение коммитов)
jj squash -r @                 # Объединить текущий коммит с родителем
jj squash -r COMMIT_ID         # Объединить конкретный коммит с его родителем

# Abandon (удаление коммита)
jj abandon COMMIT_ID           # Удалить коммит (но файлы останутся в @)
```

## Git интеграция

```bash
# Экспорт и импорт
jj git export                  # Синхронизировать jj с Git
jj git import                  # Импортировать Git ветки в jj

# Push и Pull
jj git push                    # Запушить все изменения
jj git push -b main            # Запушить только bookmark main
jj git pull                    # Потянуть изменения с удалённого

# Работа с Git напрямую
git checkout main              # Обычные Git команды работают!
git merge BRANCH
git push origin main
```

## Разрешение конфликтов

```bash
# При конфликтах во время rebase
jj resolve                     # Разрешить конфликты
jj resolve --tool=union        # С объединением (берёт всё)
jj diff                        # Посмотреть различия

# После редактирования файлов вручную
jj resolve                     # Отметить конфликт разрешённым
jj squash -r @                 # Переместить разрешение в основной коммит
```

## Типичные workflow'ы

### Создать и слить новую ветку в main

```bash
# Посмотреть состояние
jj log --graph

# Создать новый коммит
jj new -m "feature: add something"

# Работать над коммитом (файлы отслеживаются автоматически)

# Создать закладку
jj bookmark create feature-branch

# Перебазировать на main
jj rebase -r @ -d main

# Обновить main
jj bookmark set main -r @

# Запушить
jj git push -b main
```

### Слить ветку `ready` в `main` с приоритетом ready

```bash
# Перебазировать main на ready
jj rebase -b main -d ready

# Обновить main bookmark
jj bookmark set main -r ready

# Запушить
jj git push -b main
```

### Вернуться к старому коммиту и что-то изменить

```bash
# Посмотреть историю
jj log --graph --all

# "Включить" старый коммит для редактирования
jj edit OLD_COMMIT_ID

# Делать изменения (они автоматически добавятся в текущий коммит)

# Посмотреть что изменилось
jj diff

# Если нужно разветвить от этого коммита
jj new -m "new branch from old commit"
```

## Полезные флаги и опции

```bash
# Смотреть только свои коммиты
jj log -r "author(myemail)"

# Смотреть коммиты с конкретным текстом
jj log -r "description(disko)"

# Операции с конкретным range
jj log -r "main..@"            # Коммиты от main до текущего

# Отмена последней операции
jj undo

# Помощь по команде
jj new --help
```

## Когда использовать Git вместо jj

Если что-то сложное происходит, всегда можешь вернуться к Git:

```bash
# Экспортировать текущее состояние в Git
jj git export

# Теперь используй обычные Git команды
git log --oneline
git merge origin/main
git push
```

Git интеграция в jj позволяет работать гибридно!

***

**Основные улучшения:**

- Убрал лишние пустые строки между блоками кода
- Выровнял таблицу по стандартам Markdown
- Переорганизовал структуру: основные концепции → команды → workflow'ы
- Унифицировал комментарии в блоках кода (выравнивание и стиль)
- Добавил подзаголовки (###) для workflow'ов вместо жирного текста
- Упростил финальный абзац

***

Готово к добавлению в Obsidian! 🚀