From 73d238a9467189f192567c66d9a5e247bbe402b9 Mon Sep 17 00:00:00 2001 From: DeepAgent Date: Mon, 27 Oct 2025 15:08:57 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B8=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BF=D0=BE=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8E=20=D0=B8=D0=B7=20Git?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UPDATE_FROM_GIT.md | 287 +++++++++------------------------------------ 1 file changed, 58 insertions(+), 229 deletions(-) diff --git a/UPDATE_FROM_GIT.md b/UPDATE_FROM_GIT.md index 60fccba..0eabb62 100644 --- a/UPDATE_FROM_GIT.md +++ b/UPDATE_FROM_GIT.md @@ -1,258 +1,87 @@ -# 🔄 Инструкция по обновлению файлов из Git репозитория +# Обновление проекта из Git -## ✅ Безопасное обновление (с сохранением .env) +## Проблема -Файл `.env` теперь добавлен в `.gitignore`, поэтому он **автоматически** игнорируется Git и не будет затронут при обновлении. - -### Шаг 1: Перейдите в директорию проекта -```bash -cd /home/ubuntu/global_it24_landing +Ошибка при сборке: +``` +error Your lockfile needs to be updated, but yarn was run with `--frozen-lockfile`. ``` -### Шаг 2: Получите обновления из репозитория -```bash -git pull origin master -``` +**Причина:** На хосте используется Yarn 4.x, а в Docker — Yarn 1.x. Форматы `yarn.lock` несовместимы. -Вот и всё! Ваш локальный `.env` файл **не будет затронут**. +## Решение ---- - -## 📋 Сценарии обновления - -### Сценарий 1: Простое обновление кода (рекомендуется) - -Когда изменились только файлы кода, но не .env: +### Шаг 1: Получите исправленную версию ```bash cd /home/ubuntu/global_it24_landing git pull origin master -./update.sh --rebuild ``` -**Время:** ~5-10 минут - ---- - -### Сценарий 2: Обновление с перезапуском - -Когда изменились только конфигурационные файлы или .env: +### Шаг 2: Запустите сборку ```bash -cd /home/ubuntu/global_it24_landing -git pull origin master -./update.sh +./deploy-simple.sh ``` -**Время:** ~10 секунд +**Что изменилось:** +- Убран флаг `--frozen-lockfile` из Dockerfile +- Yarn будет генерировать совместимый `yarn.lock` внутри контейнера +- Сборка займет 15-20 минут ---- +## Альтернатива: Чистая пересборка -### Сценарий 3: Полное переразвертывание - -Когда нужна полная пересборка (например, изменились зависимости): - -```bash -cd /home/ubuntu/global_it24_landing -git pull origin master -./deploy.sh --fast -``` - -**Время:** ~10-15 минут - ---- - -## 🔐 Если .env был случайно добавлен в Git (восстановление) - -Если `.env` файл был случайно закоммичен в Git раньше: +Если хотите полностью очистить кеш: ```bash cd /home/ubuntu/global_it24_landing -# Создайте резервную копию вашего .env -cp .env .env.backup - -# Удалите .env из Git (но не с диска!) -git rm --cached .env - -# Восстановите .env из резервной копии (если нужно) -cp .env.backup .env - -# Зафиксируйте изменения -git commit -m "Удален .env из репозитория" -git push origin master -``` - ---- - -## ⚠️ Важные замечания - -### ✅ Файлы, которые Git НЕ трогает: -- `.env` (ваши локальные настройки) -- `node_modules/` (зависимости) -- `.next/` (сборка) -- Любые файлы из `.gitignore` - -### 🔄 Файлы, которые Git обновляет: -- Исходный код приложения (`nextjs_space/app/`, `nextjs_space/components/`, и т.д.) -- Конфигурационные файлы (`.dockerignore`, `docker-compose.yml`, и т.д.) -- Скрипты (`deploy.sh`, `update.sh`, и т.д.) -- Документация (`.md` файлы) - ---- - -## 🚨 Решение проблем - -### Проблема: Git требует коммита перед pull - -**Ошибка:** -``` -error: Your local changes to the following files would be overwritten by merge: - some-file.js -Please commit your changes or stash them before you merge. -``` - -**Решение 1: Сохранить изменения (если они нужны)** -```bash -git add . -git commit -m "Локальные изменения" -git pull origin master -``` - -**Решение 2: Временно спрятать изменения** -```bash -git stash -git pull origin master -git stash pop # Восстановить изменения -``` - -**Решение 3: Отменить локальные изменения (осторожно!)** -```bash -git reset --hard HEAD -git pull origin master -``` - ---- - -### Проблема: Конфликт при pull - -**Ошибка:** -``` -CONFLICT (content): Merge conflict in some-file.js -Automatic merge failed; fix conflicts and then commit the result. -``` - -**Решение:** -```bash -# 1. Посмотрите какие файлы конфликтуют -git status - -# 2. Отредактируйте конфликтующие файлы вручную -nano conflicted-file.js - -# 3. После исправления конфликтов -git add . -git commit -m "Разрешен конфликт слияния" -``` - -**Или отмените слияние:** -```bash -git merge --abort -``` - ---- - -## 📝 Полезные команды - -```bash -# Проверить текущий статус -git status - -# Посмотреть что изменилось -git diff - -# Посмотреть историю коммитов -git log --oneline -10 - -# Проверить удаленные изменения (не скачивая) -git fetch origin -git log HEAD..origin/master --oneline - -# Посмотреть содержимое .gitignore -cat .gitignore - -# Проверить отслеживается ли .env файл -git ls-files | grep .env -``` - ---- - -## 🎯 Быстрая памятка - -### Обычное обновление: -```bash -cd /home/ubuntu/global_it24_landing -git pull origin master -./update.sh --rebuild -``` - -### Только перезапуск (без обновления): -```bash -./update.sh -``` - -### Полная пересборка: -```bash -git pull origin master -./deploy.sh --fast -``` - ---- - -## ✅ Проверка после обновления - -```bash -# Проверьте статус контейнеров -./status.sh - -# Проверьте логи -./logs.sh - -# Проверьте работу приложения -curl http://localhost:3000 - -# Проверьте что .env не изменился -cat .env | grep POSTGRES_PASSWORD -``` - ---- - -## 🆘 В случае проблем - -Если что-то пошло не так: - -```bash -# 1. Проверьте статус -./status.sh -./logs.sh - -# 2. Попробуйте перезапустить -./update.sh - -# 3. Если не помогло - полная пересборка +# Остановка контейнеров docker compose down -./deploy.sh --fast -# 4. Если совсем плохо - восстановите из бэкапа -docker compose down -v -# Восстановите .env из резервной копии -./deploy.sh --fast +# Удаление старых образов +docker system prune -a --volumes + +# Получение обновлений +git pull origin master + +# Сборка +./deploy-simple.sh ``` ---- +## Проверка после сборки -## 📞 Контакты +```bash +# Статус контейнеров +./status.sh -Git репозиторий: `git.mscsrv.ru/sa/global_it24_landing.git` +# Логи приложения +./logs.sh -Все готово! Теперь вы можете безопасно обновлять файлы, не боясь потерять настройки .env. +# Проверка работы +curl http://localhost:3000 +``` + +## Если нужна помощь + +Проверьте версию Yarn: +```bash +yarn --version +``` + +Если показывает 4.x — это нормально. В Docker используется 1.x, и это тоже правильно. + +## Автоматическое обновление + +Для будущих обновлений используйте: + +```bash +cd /home/ubuntu/global_it24_landing +./update.sh +``` + +Этот скрипт автоматически: +- Остановит контейнеры +- Получит обновления из Git +- Пересоберет образы +- Запустит новую версию