worktree-manager

0

Описание

🚀 Интерактивный менеджер Git worktree с умной обработкой удалённых веток, автоочисткой и интеграцией с IDE

Языки

  • Go100%
README.md

Git Manager (gman) v3.0.0

Универсальная CLI-обёртка для Git с интерактивными меню, написанная на Go. Обеспечивает удобное управление worktree, ветками, remote репозиториями с автоматической интеграцией IDE и прямым проброс git команд.

🚀 Основные возможности

  • Двухуровневые меню: Выбор сущности → выбор действия с навигацией назад
  • Управление worktree: Создание, удаление, просмотр, открытие в IDE
  • Управление ветками: Переключение, создание веток-наследников, удаление с проверкой занятости
  • Управление remote: Добавление, удаление, изменение URL remote репозиториев
  • Безопасные операции: Предотвращение дублирования worktree и конфликтов веток
  • Git passthrough: Прозрачный проброс неизвестных команд в git
  • Интерактивные меню: Навигация стрелками, фильтрация в реальном времени, Backspace для возврата
  • IDE интеграция: Автоматическое открытие worktree в PhpStorm
  • Claude Code интеграция: Автоматическое копирование конфигурационных файлов Claude (.claude/, CLAUDE.md, CLAUDE.local.md)
  • Кросс-платформенность: Linux, macOS, Windows, WSL
  • UTF-8 поддержка: Корректная работа с кириллицей и спецсимволами

📋 Команды

Worktree (gman w)

Ветки (gman b)

Remote репозитории (gman r)

Системные команды

🤖 Интеграция с Claude Code

Gman поддерживает автоматическое копирование конфигурационных файлов Claude при создании нового worktree:

Автоматически копируемые файлы

При выполнении

gman w add <branch>
автоматически копируются (если существуют в текущей директории):

  • 📁
    .claude/
    - вся папка конфигурации Claude рекурсивно (настройки, хуки, etc.)
  • 📄
    CLAUDE.md
    - файл с инструкциями и контекстом для Claude
  • 📄
    CLAUDE.local.md
    - локальные инструкции для конкретного проекта

Пример работы

Особенности копирования

  • Копирование с заменой: Существующие файлы перезаписываются без запросов
  • Условное копирование: Копируются только существующие в исходной директории файлы
  • Сохранение структуры: Папка
    .claude
    копируется полностью с подпапками
  • Права доступа: Сохраняются оригинальные права доступа к файлам
  • Обработка ошибок: При проблемах с копированием выводится предупреждение, но процесс создания worktree продолжается

🎯 Примеры использования

Двухуровневое интерактивное меню

Работа с удалёнными ветками

Git passthrough

🛠 Установка

Сборка из исходников

Проверка установки

⚙️ Конфигурация

Настройки хранятся в файле

~/.config/wt/config
:

🏗 Архитектура

gman/ ├── cmd/ # CLI команды (Cobra framework) │ ├── root.go # Главная команда + git passthrough │ ├── worktree*.go # Команды управления worktree (w) │ ├── branch*.go # Команды управления ветками (b) │ └── remote*.go # Команды управления remote (r) ├── ui/ # Интерактивные пользовательские интерфейсы │ ├── menu.go # Универсальная система меню │ └── interactive.go # Специализированные UI функции ├── worktree/ # Менеджер жизненного цикла worktree + копирование Claude конфигов ├── git/ # Обёртка для работы с Git командами ├── config/ # Система управления конфигурацией ├── validator/ # Валидация веток, путей и репозитория └── utils/ # Кросс-платформенные утилиты

Особенности архитектуры

  • Модульность: Чёткое разделение ответственности между пакетами
  • Типобезопасность: Использование системы типов Go для предотвращения ошибок
  • Интерактивность: Универсальная система меню с поддержкой tcell
  • Fallback режим: Автоматическое переключение на классический ввод при необходимости
  • Git совместимость: Полная совместимость с существующими git командами

🎮 Интерактивные возможности

Навигация в меню

Интерактивный режим (tcell)

  • Стрелки ↑↓: Перемещение по пунктам
  • Цифры 1-9: Быстрый выбор по номеру
  • Ввод текста: Фильтрация опций в реальном времени
  • Enter: Подтвердить выбор
  • Esc: Отмена операции
  • Backspace: Удаление символов из фильтра или возврат назад (если фильтр пустой)
  • m: Ручной ввод (где доступно)

Классический режим (fallback)

  • Номер: Выбор опции по номеру (1, 2, 3...)
  • Название: Частичный ввод названия опции
  • back, b, назад, н: Возврат к предыдущему меню
  • Enter (пустая строка): Отмена операции
  • Ctrl+C: Принудительное завершение

Двухуровневая архитектура команд

  • Уровень 1: Выбор сущности (worktree/ветка/remote)
  • Уровень 2: Выбор действия над сущностью
  • Навигация назад: Возврат к списку сущностей через Backspace
  • Циклическая работа: Возможность выполнить несколько операций подряд

Автоматические функции

  • Создание локальных веток: Для удалённых веток с отслеживанием
  • Предотвращение дублирования: Проверка существующих worktree перед созданием
  • Проверка занятости веток: Предотвращение переключения на ветки, используемые в worktree
  • Очистка директорий: Удаление пустых папок после удаления worktree
  • Интеграция IDE: Автоматическое открытие проектов в PhpStorm
  • Валидация: Проверка существования веток и корректности путей
  • Выделение текущей ветки: Показ текущей ветки зелёным цветом с пометкой (невыбираемая)
  • Сохранение номеров: Исходные номера опций сохраняются при фильтрации
  • Копирование конфигурации Claude: Автоматическое копирование файлов
    .claude/
    ,
    CLAUDE.md
    ,
    CLAUDE.local.md
    в новые worktree

🔧 Требования

  • Git версии 2.5+ с поддержкой worktree
  • Go версии 1.21+ (для сборки из исходников)
  • Операционная система: Linux, macOS, Windows, WSL
  • Права на запись в рабочую директорию
  • Опционально: PhpStorm, VSCode, или другая IDE для интеграции

🚨 Устранение неполадок

Проблемы с интерактивным режимом

Проблемы с git passthrough

Проблемы с конфигурацией

📈 Версионирование

  • v3.0.0: Полная переписка на Go с новой архитектурой + интеграция с Claude Code (автоматическое копирование конфигурационных файлов)
  • v2.x: Версии на bash (deprecated)
  • v1.x: Первоначальные версии (deprecated)

🤝 Совместимость

  • Обратная совместимость с конфигурацией
    wt
    команды
  • Сохранение всех настроек в
    ~/.config/wt/config
  • Поддержка старых путей к IDE и рабочим директориям

📞 Поддержка

  • Встроенная справка:
    gman --help
    ,
    gman <command> --help
  • Информация о версии:
    gman version
  • Подробный режим:
    gman -v <command>
    для отладки
  • Исходный код: Полностью документированный код на Go