--- description: Додати всі зміни до індексу, створити коміт та відправити на віддалений сервер (використовуйте з обережністю) allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*), Bash(git push:*), Bash(git diff:*), Bash(git log:*), Bash(git pull:*) --- # Коміт та Push усього ⚠️ **УВАГА**: Додає ВСІ зміни до індексу, створює коміт та відправляє на віддалений сервер. Використовуйте лише коли впевнені, що всі зміни належать разом. ## Робочий процес ### 1. Аналіз змін Запустити паралельно: - `git status` — показати змінені/додані/видалені/невідстежувані файли - `git diff --stat` — показати статистику змін - `git log -1 --oneline` — показати останній коміт для стилю повідомлення ### 2. Перевірки безпеки **❌ ЗУПИНИТИ та ПОПЕРЕДИТИ при виявленні:** - Секрети: `.env*`, `*.key`, `*.pem`, `credentials.json`, `secrets.yaml`, `id_rsa`, `*.p12`, `*.pfx`, `*.cer` - API-ключі: Будь-які змінні `*_API_KEY`, `*_SECRET`, `*_TOKEN` з реальними значеннями (не заповнювачі типу `your-api-key`, `xxx`, `placeholder`) - Великі файли: `>10MB` без Git LFS - Артефакти збірки: `node_modules/`, `dist/`, `build/`, `__pycache__/`, `*.pyc`, `.venv/` - Тимчасові файли: `.DS_Store`, `thumbs.db`, `*.swp`, `*.tmp` **Валідація API-ключів:** Перевірити змінені файли на патерни: ```bash OPENAI_API_KEY=sk-proj-xxxxx # ❌ Виявлено реальний ключ! AWS_SECRET_KEY=AKIA... # ❌ Виявлено реальний ключ! STRIPE_API_KEY=sk_live_... # ❌ Виявлено реальний ключ! # ✅ Допустимі заповнювачі: API_KEY=your-api-key-here SECRET_KEY=placeholder TOKEN=xxx API_KEY= SECRET=${YOUR_SECRET} ``` **✅ Перевірити:** - `.gitignore` правильно налаштований - Немає конфліктів злиття - Правильна гілка (попередити якщо main/master) - API-ключі є лише заповнювачами ### 3. Запит підтвердження Представити резюме: ``` 📊 Резюме змін: - X файлів змінено, Y додано, Z видалено - Загалом: +AAA вставок, -BBB видалень 🔒 Безпека: ✅ Без секретів | ✅ Без великих файлів | ⚠️ [попередження] 🌿 Гілка: [назва] → origin/[назва] Я виконаю: git add . → commit → push Введіть 'yes' для продовження або 'no' для скасування. ``` **ЧЕКАТИ явного "yes" перед продовженням.** ### 4. Виконання (після підтвердження) Запустити послідовно: ```bash git add . git status # Перевірка індексу ``` ### 5. Генерація повідомлення коміту Проаналізувати зміни та створити conventional commit: **Формат:** ``` [тип]: Короткий опис (макс. 72 символи) - Ключова зміна 1 - Ключова зміна 2 - Ключова зміна 3 ``` **Типи:** `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`, `perf`, `build`, `ci` **Приклад:** ``` docs: Update concept README files with comprehensive documentation - Add architecture diagrams and tables - Include practical examples - Expand best practices sections ``` ### 6. Коміт та Push ```bash git commit -m "$(cat <<'EOF' [Згенероване повідомлення коміту] EOF )" git push # Якщо невдача: git pull --rebase && git push git log -1 --oneline --decorate # Перевірка ``` ### 7. Підтвердження успіху ``` ✅ Успішно відправлено на віддалений сервер! Коміт: [хеш] [повідомлення] Гілка: [гілка] → origin/[гілка] Змінено файлів: X (+вставок, -видалень) ``` ## Обробка помилок - **git add невдача**: Перевірити дозволи, заблоковані файли, переконатися що репо ініціалізовано - **git commit невдача**: Виправити pre-commit хуки, перевірити git config (user.name/email) - **git push невдача**: - Non-fast-forward: `git pull --rebase && git push` - Немає віддаленої гілки: `git push -u origin [гілка]` - Захищена гілка: Використати PR-процес замість цього ## Коли використовувати ✅ **Доцільно:** - Оновлення документації в кількох файлах - Функція з тестами та документацією - Виправлення помилок у кількох файлах - Форматування/рефакторинг всього проєкту - Зміни конфігурації ❌ **Уникати:** - Невпевненість у тому, що комітиться - Містить секрети/чутливі дані - Захищені гілки без рев'ю - Присутні конфлікти злиття - Потрібна гранулярна історія комітів - Pre-commit хуки не проходять ## Альтернативи Якщо користувач хоче більше контролю, запропонувати: 1. **Вибіркове додавання**: Переглянути/додати конкретні файли 2. **Інтерактивне додавання**: `git add -p` для вибору патчів 3. **PR-процес**: Створити гілку → push → PR (використати команду `/pr`) **⚠️ Памʼятайте**: Завжди переглядайте зміни перед push. Якщо сумніваєтесь, використовуйте окремі git-команди для більшого контролю. --- **Останнє оновлення**: 9 квітня 2026