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