Skip to content

Commit

Permalink
answer to doka-guide#5341 issue
Browse files Browse the repository at this point in the history
  • Loading branch information
Otkazano committed Jul 30, 2024
1 parent 4183874 commit 5b96348
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 0 deletions.
20 changes: 20 additions & 0 deletions interviews/git-rebase-merge/answers/otkazano/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Обе команды служат одной цели, но имеют существенные отличия в работе.

`git merge` объединяет изменения из одной ветки в другую, создавая новый коммит слияния `merge commit`. История проекта остается неизменной, записываются все коммиты. Можно проследить, когда и как ветки были объединены, но читать такую последовательность становится сложнее.

_Обратите внимание, что при использовании `merge` мы должны находиться в ветке, в которую делаем слияние:_
```bash
git checkout main
git merge feature
```

`git rebase` перемещает или переписывает базу текущей ветки на указанную базу другой ветки. Это переписывает историю коммитов (в том числе изменяя хэши), делая ее линейной, не создаёт новый коммит слияния `merge commit`. Это значительно упрощает чтение последовательности внедрения фич, но усложняет отслеживание детальной хронологии. Самое большое преимущество заключается в возможности перенести только часть коммитов, как указано в статье.

_Обратите внимание, что при использовании `rebase` мы должны находиться в ветке, из которой делаем слияние:_
```bash
git checkout feature
git rebase main
```

Используйте `merge`, когда вы хотите сохранить всю историю разработки, включая все ветвления и слияния. Это полезно для командной работы, где важно видеть весь контекст изменений.
Используйте `rebase`, когда вы хотите поддерживать чистую и линейную историю. Это особенно полезно для интеграции изменений в основную ветку перед созданием `pull request`, чтобы история коммитов была более понятной.
6 changes: 6 additions & 0 deletions interviews/git-rebase-merge/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
related:
- recipes/git-rebase-onto
---

Разница между `git merge` и `git rebase`?
4 changes: 4 additions & 0 deletions people/otkazano/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
name: 'Владимир Стругов'
url: https://github.com/Otkazano
---

0 comments on commit 5b96348

Please sign in to comment.