Добавлена инструкция по обновлению из Git
This commit is contained in:
@@ -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
|
||||
- Пересоберет образы
|
||||
- Запустит новую версию
|
||||
|
||||
Reference in New Issue
Block a user