34. Перебазування

Цілі

  • Використовувати команду rebase замість команди merge.

Отже, ми повернулися в точку до першого злиття і хочемо перенести зміни із master у нашу гілку style.

Цього разу для перенесення змін з гілки master ми будемо використовувати команду rebase замість merge.

Виконайте:

git checkout style
git rebase master
git hist

Результат:

$ go style
Switched to branch 'style'
$
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying: Added css stylesheet
Applying: Hello uses style.css
Applying: Updated index.html
$
$ git hist
* 6e6c76a 2011-03-09 | Updated index.html (HEAD, style) [Alexander Shvets]
* 1436f13 2011-03-09 | Hello uses style.css [Alexander Shvets]
* 59da9a7 2011-03-09 | Added css stylesheet [Alexander Shvets]
* 6c0f848 2011-03-09 | Added README (master) [Alexander Shvets]
* 8029c07 2011-03-09 | Added index.html. [Alexander Shvets]
* 567948a 2011-03-09 | Moved hello.html to lib [Alexander Shvets]
* 6a78635 2011-03-09 | Add an author/email comment [Alexander Shvets]
* fa3c141 2011-03-09 | Added HTML header (v1) [Alexander Shvets]
* 8c32287 2011-03-09 | Added standard HTML page tags (v1-beta) [Alexander Shvets]
* 43628f7 2011-03-09 | Added h1 tag [Alexander Shvets]
* 911e8c9 2011-03-09 | First Commit [Alexander Shvets]

01 Злиття VS перебазування

Кінцевий результат перебазування дуже схожий на результат злиття. Гілка style в даний час містить всі свої зміни, а також всі зміни гілки master. Однак, дерево комітів значно відрізняється. Дерево комітів гілки style було переписано таким чином, що гілка master є частиною історії комітів. Це робить ланцюг комітів лінійним і набагато більш читабельним.

02 Коли використовувати перебазування, а коли злиття?

Не використовуйте перебазування …

  1. Якщо гілка є публічною і розшаренною. Переписування загальних гілок заважатиме роботі інших членів команди.
  2. Коли важлива точна історія комітів гілки (тому що команда rebase переписує історію комітів).

Враховуючи наведені вище рекомендації, я волію використовувати rebase для короткочасних, локальних гілок, а злиття для гілок у публічному репозиторію.