# Полное слияние ветки test в main с удалением test

## 📌 Задача

У вас есть две ветки: `main` и `test`. Вам нужно:

- **Полностью заменить содержимое `main` на текущее состояние `test`**.
- **Удалить ветку `test` после слияния**.

---

## ✅ Пошаговое решение

### 1️⃣ **Переключаемся в `main`**

```bash
git checkout main
```

### 2️⃣ **Обновляем `main` перед слиянием** (если работаем с удалённым репозиторием)

```bash
git pull origin main
```

### 3️⃣ **Полностью заменяем `main` на `test`**

```bash
git reset --hard test
```

### 4️⃣ **Принудительно отправляем изменения в удалённый репозиторий**

```bash
git push --force origin main
```

🚨 **Внимание!** Использование `--force` полностью заменит удалённую ветку `main` на состояние `test`. Будьте уверены, что ничего важного не потеряете!

### 5️⃣ **Удаляем ветку `test` локально**

```bash
git branch -D test

```

### 6️⃣ **Удаляем ветку `test` на удалённом сервере**

```bash
git push origin --delete test
```

---

## 🔥 Объяснение команд

<table id="bkmrk-%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-git"><thead><tr><th>Команда</th><th>Описание</th></tr></thead><tbody><tr><td>`git checkout main`</td><td>Переключаемся в ветку `main`.</td></tr><tr><td>`git pull origin main`</td><td>Загружаем актуальные изменения `main`.</td></tr><tr><td>`git reset --hard test`</td><td>Полностью заменяем содержимое `main` на `test`.</td></tr><tr><td>`git push --force origin main`</td><td>Принудительно обновляем `main` на удалённом сервере.</td></tr><tr><td>`git branch -D test`</td><td>Удаляем локальную ветку `test`.</td></tr><tr><td>`git push origin --delete test`</td><td>Удаляем ветку `test` в удалённом репозитории.</td></tr></tbody></table>

---

## 🚀 Итог

- Ветка **`main` станет идентичной `test`**.
- Ветка **`test` будет удалена локально и на сервере**.

---

## ⚠ Важно!

- **Если `main` используется другими разработчиками**, предупредите их перед выполнением `git push --force origin main`, так как это **перезапишет всю историю**.
- **Более безопасный способ**, если `main` нельзя перезаписывать принудительно: ```bash
    git checkout main
    git merge --strategy=ours test
    git push origin main
    ```