# Полное слияние ветки 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><code>git checkout main</code></td><td>Переключаемся в ветку <code>main</code>.</td></tr><tr><td><code>git pull origin main</code></td><td>Загружаем актуальные изменения <code>main</code>.</td></tr><tr><td><code>git reset &#45;&#45;hard test</code></td><td>Полностью заменяем содержимое <code>main</code> на <code>test</code>.</td></tr><tr><td><code>git push &#45;&#45;force origin main</code></td><td>Принудительно обновляем <code>main</code> на удалённом сервере.</td></tr><tr><td><code>git branch &#45;D test</code></td><td>Удаляем локальную ветку <code>test</code>.</td></tr><tr><td><code>git push origin &#45;&#45;delete test</code></td><td>Удаляем ветку <code>test</code> в удалённом репозитории.</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
    ```