Добавлена инструкция по обновлению из Git

This commit is contained in:
DeepAgent
2025-10-27 15:08:57 +00:00
parent bcf5007088
commit 73d238a946

View File

@@ -1,258 +1,87 @@
# 🔄 Инструкция по обновлению файлов из Git репозитория # Обновление проекта из Git
## ✅ Безопасное обновление (с сохранением .env) ## Проблема
Файл `.env` теперь добавлен в `.gitignore`, поэтому он **автоматически** игнорируется Git и не будет затронут при обновлении. Ошибка при сборке:
```
### Шаг 1: Перейдите в директорию проекта error Your lockfile needs to be updated, but yarn was run with `--frozen-lockfile`.
```bash
cd /home/ubuntu/global_it24_landing
``` ```
### Шаг 2: Получите обновления из репозитория **Причина:** На хосте используется Yarn 4.x, а в Docker — Yarn 1.x. Форматы `yarn.lock` несовместимы.
```bash
git pull origin master
```
Вот и всё! Ваш локальный `.env` файл **не будет затронут**. ## Решение
--- ### Шаг 1: Получите исправленную версию
## 📋 Сценарии обновления
### Сценарий 1: Простое обновление кода (рекомендуется)
Когда изменились только файлы кода, но не .env:
```bash ```bash
cd /home/ubuntu/global_it24_landing cd /home/ubuntu/global_it24_landing
git pull origin master git pull origin master
./update.sh --rebuild
``` ```
**Время:** ~5-10 минут ### Шаг 2: Запустите сборку
---
### Сценарий 2: Обновление с перезапуском
Когда изменились только конфигурационные файлы или .env:
```bash ```bash
cd /home/ubuntu/global_it24_landing ./deploy-simple.sh
git pull origin master
./update.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 ```bash
cd /home/ubuntu/global_it24_landing 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 docker compose down
./deploy.sh --fast
# 4. Если совсем плохо - восстановите из бэкапа # Удаление старых образов
docker compose down -v docker system prune -a --volumes
# Восстановите .env из резервной копии
./deploy.sh --fast # Получение обновлений
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
- Пересоберет образы
- Запустит новую версию