worktree-manager
Описание
🚀 Интерактивный менеджер Git worktree с умной обработкой удалённых веток, автоочисткой и интеграцией с IDE
Языки
- Go100%
8 месяцев назад
8 месяцев назад
8 месяцев назад
8 месяцев назад
8 месяцев назад
8 месяцев назад
5 месяцев назад
9 месяцев назад
9 месяцев назад
5 месяцев назад
9 месяцев назад
5 месяцев назад
9 месяцев назад
9 месяцев назад
9 месяцев назад
8 месяцев назад
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 рекурсивно (настройки, хуки, etc.).claude/ - 📄
- файл с инструкциями и контекстом для ClaudeCLAUDE.md - 📄
- локальные инструкции для конкретного проекта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в новые worktreeCLAUDE.local.md
🔧 Требования
- 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 --helpgman <command> --help - Информация о версии: gman version
- Подробный режим:
для отладкиgman -v <command> - Исходный код: Полностью документированный код на Go