-
Notifications
You must be signed in to change notification settings - Fork 639
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
…5471) Co-authored-by: Tatiana Fokina <[email protected]>
- Loading branch information
1 parent
2f68d06
commit eba88dd
Showing
3 changed files
with
35 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
Обе команды нужны для одной цели, но имеют существенные отличия в том, как работают. | ||
|
||
`git merge` объединяет изменения из одной ветки в другую, создавая новый коммит слияния `merge commit`, который сохраняет полную историю проекта. Это позволяет проследить все коммиты и увидеть, когда и как ветки были объединены, хотя такая история может быть сложнее для чтения. Однако, если целевая ветка не имеет новых коммитов, Git использует `fast-forward merge`, просто перемещая указатель вперёд без создания дополнительного коммита, что сохраняет линейную и более простую для чтения историю. | ||
|
||
Обратите внимание, что, при использовании `merge`, мы должны находиться в ветке, **в которую** делаем перемещение. | ||
|
||
```bash | ||
git checkout main | ||
git merge feature | ||
``` | ||
|
||
`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`, мы должны находиться в ветке, **из которой** делаем перемещение. | ||
|
||
```bash | ||
git checkout feature | ||
git rebase main | ||
``` | ||
|
||
Используйте `merge`, когда хотите сохранить всю историю разработки, включая все ветвления и слияния. Это полезно для командной работы, где важно видеть весь контекст изменений. | ||
|
||
Используйте `rebase`, когда хотите поддерживать чистую и линейную историю. Это особенно полезно для интеграции изменений в основную ветку перед созданием `pull request`, чтобы история коммитов была более понятной. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
--- | ||
related: | ||
- recipes/git-rebase-onto | ||
--- | ||
|
||
Какая разница между `git merge` и `git rebase`? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
--- | ||
name: 'Владимир Стругов' | ||
url: https://github.com/Otkazano | ||
badges: | ||
- first-contribution-small | ||
--- |