lab 34 Cambio de Base (Rebasing)

Metas

Regresamos en el tiempo antes de la primera fusión y deseamos tener los cambios de la ramificación principal en greet.

Esta vez usaremos el comando rebase en vez del comando merge para traer los cambios desde la ramificación principal.

Ejecute:

git checkout greet
git rebase master
git hist

Salida:

$ go greet
Switched to branch 'greet'
$
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying: added Greeter class
Applying: hello uses Greeter
Applying: updated Rakefile
$
$ git hist
* e1399d1 2012-03-06 | Updated Rakefile (HEAD, greet) [Jim Weirich]
* 183c6ad 2012-03-06 | Hello uses Greeter [Jim Weirich]
* 297678c 2012-03-06 | Added greeter class [Jim Weirich]
* 3ce0095 2012-03-06 | Added README (master) [Jim Weirich]
* 76ba0a7 2012-03-06 | Added a Rakefile. [Jim Weirich]
* b8f15c3 2012-03-06 | Moved hello.rb to lib [Jim Weirich]
* 9c78ad8 2012-03-06 | Add an author/email comment [Jim Weirich]
* 4054321 2012-03-06 | Added a comment (v1) [Jim Weirich]
* 1b754e9 2012-03-06 | Added a default value (v1-beta) [Jim Weirich]
* 3053491 2012-03-06 | Using ARGV [Jim Weirich]
* 3cbf83b 2012-03-06 | First Commit [Jim Weirich]

Merge VS Rebase 01

El resultado final del Cambio de Base es muy similar a la Fusión. La ramificación "greet" ahora contiene todos sus cambios, así como los cambios en la ramificación principal. Sin embargo, el árbol de Commits es un poco diferente. El árbol de Commits para la ramificación "greet" ha sido reescrito para la ramificación principal forme parte del historial de Commit. Esto deja la cadena de commits lineal y mucho má fácil de leer.

¿Cuándo usar el comando Rebase, cuándo Merge? 02

No use Rebase

  1. Si la ramificación es pública y compartida con otros. Reescribir ramificaciones públicas tiende a hacer enojar a otros miembros del equipo.
  2. Cuando la exactitud del historial es importante (debido a que rebase reescribe el historial de Commits).

Dada las directrices anteriores, yo tiendo a usar el coamdno rebase para ramificaciones locales de corta vida, y el comando merge para ramificaciones en repositorios públicos.

Tabla de Contenidos