Skip to content

Commit

Permalink
add edits after review
Browse files Browse the repository at this point in the history
  • Loading branch information
Otkazano committed Oct 24, 2024
1 parent 99e00e4 commit 7af95e0
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions interviews/git-rebase-merge/answers/otkazano/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Обе команды нужны для одной цели, но имеют существенные отличия в том, как работают.

`git merge` объединяет изменения из одной ветки в другую, создавая новый коммит слияния `merge commit`. История проекта остаётся неизменной, записываются все коммиты. Можно проследить, когда и как ветки были объединены, но читать такую последовательность сложнее.
`git merge` объединяет изменения из одной ветки в другую, создавая новый коммит слияния `merge commit`, который сохраняет полную историю проекта. Это позволяет проследить все коммиты и увидеть, когда и как ветки были объединены, хотя такая история может быть сложнее для чтения. Однако, если целевая ветка не имеет новых коммитов, Git использует `fast-forward merge`, просто перемещая указатель вперёд без создания дополнительного коммита, что сохраняет линейную и более простую для чтения историю.

Обратите внимание, что, при использовании `merge`, мы должны находиться в ветке, **в которую** делаем перемещение.

Expand All @@ -9,7 +9,7 @@ git checkout main
git merge feature
```

`git rebase` перемещает или переписывает базу текущей ветки на указанную базу другой ветки. Это переписывает историю коммитов (в том числе изменяя хэши), делая её линейной, не создаёт новый коммит слияния `merge commit`. Это упрощает чтение последовательности внедрения фич, но усложняет отслеживание детальной хронологии. Главное преимущество команды — возможность перенести только часть коммитов. Будьте осторожны, `git rebase` может [иметь негативный эффект](https://git-scm.com/book/ru/v2/%D0%92%D0%B5%D1%82%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2-Git-%D0%9F%D0%B5%D1%80%D0%B5%D0%B1%D0%B0%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5#:~:text=%D0%9E%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D1%8F).
`git rebase` перемещает или переписывает базу текущей ветки на указанную базу другой ветки, изменяя хэши коммитов и делая историю линейной, что упрощает чтение последовательности внедрения фич. При этом не создаётся новый коммит слияния `merge commit`, но это может затруднить отслеживание точной хронологии. Важно, что `git rebase` позволяет переносить только часть коммитов и не требует находиться в целевой ветке — можно использовать флаг `--onto`, чтобы выполнить ребейз на другую ветку или коммит, гибко управляя изменениями. Будьте осторожны, так как команда может [иметь негативный эффект](https://git-scm.com/book/ru/v2/%D0%92%D0%B5%D1%82%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2-Git-%D0%9F%D0%B5%D1%80%D0%B5%D0%B1%D0%B0%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5#:~:text=%D0%9E%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D1%8F).

Обратите внимание, что, при использовании `rebase`, мы должны находиться в ветке, **из которой** делаем перемещение.

Expand Down

0 comments on commit 7af95e0

Please sign in to comment.