# Разница rebase и merge

Разница между `git merge` и `git rebase` заключается в том, **как они объединяют изменения из одной ветки в другую** и как это отражается на истории коммитов.

***

#### **1. Merge**

* **Что делает:** Объединяет изменения двух веток, создавая **новый коммит слияния**.
* **История:** Сохраняет все ветки и коммиты, история может быть **разветвлённой**.
* **Плюсы:**
  * Сохраняется полный контекст работы веток.
  * Безопасно для публичных веток.
* **Минусы:**
  * История может быть «засорённой» множеством merge-коммитов.

**Пример:**

```
main:     A --- B
feature:      C --- D
merge:   A --- B --- M
                \ C --- D
```

* `M` — merge-коммит.

Команда:

```bash
git checkout main
git merge feature
```

***

#### **2. Rebase**

* **Что делает:** Переносит коммиты одной ветки на вершину другой ветки, **переписывая историю**.
* **История:** Линейная, без merge-коммитов.
* **Плюсы:**
  * Чистая, линейная история.
  * Удобно для подготовки ветки перед объединением с основной.
* **Минусы:**
  * Переписывает историю, **небезопасно на публичных ветках**, которыми пользуются другие.

**Пример:**

```
main:     A --- B
feature:      C --- D
rebase:   A --- B --- C' --- D'
```

* `C'` и `D'` — новые коммиты с теми же изменениями.

Команда:

```bash
git checkout feature
git rebase main
```

***

#### **Ключевое различие**

* **Merge:** сохраняет историю ветвления, добавляет merge-коммит.
* **Rebase:** «переписывает» коммиты так, как будто они были созданы на основе целевой ветки, история становится линейной.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kaze.gitbook.io/qa-theory/git/raznica-rebase-i-merge.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
