Comencé a usar git en algún momento y no entiendo completamente las complejidades. Mi pregunta básica aquí es averiguar la diferencia entre una git pull
y git pull --rebase
, dado que la adición de la --rebase
opción no parece que hacer algo muy diferente: sólo lo hace un tirón.
Por favor, ayúdame a entender la diferencia.
Respuestas:
git pull
=git fetch
+git merge
contra el seguimiento de la rama aguas arribagit pull --rebase
=git fetch
+git rebase
contra el seguimiento de la rama aguas arribaSi quieres saber cómo
git merge
ygit rebase
diferir, lee esto .fuente
git pull --rebase
es lo mismogit fetch
ygit rebase
es básicamente cómo es, pero no es exactamente semánticamente equivalente. Hay algunas diferencias, algunas de las cuales se explican aquí. gitolite.com/git-pull--rebasefetch
?Respuesta tomada de (y ligeramente modificada):
http://gitolite.com/git-pull--rebase
fuente
a---b+c---d+e---f---p'---q'---r' (foo)
ya que el rebase cambia los hashes.A
, y envié un RP al repositorio aguas arriba que fue aceptado. Luego, cuando lo hicegit pull --rebase
contra el repositorio ascendente, no obtuve una nuevaA'
confirmación además del repositorio ascendente retirado. De hecho, noA'
existía en absoluto. ¿Es esto porqueA
se fusionó con el sistema? ¿O es porque no hubo diferencia entre el upstream y mi versión rebase?git pull --rebase
. Pero una cosa que me confunde en esta situación hipotética es que el responsable del mantenimiento ha cambiado el historial del proyecto que ya se ha incorporado a los repositorios de desarrolladores locales. ¿No es solo una mala práctica en general? Si quisiera aplastar los commits / reescribir el historial, debería haberlo hecho antes de integrarlo en el repositorio central para evitar este tipo de conflictos.Supongamos que tiene dos confirmaciones en la sucursal local:
Después de "git pull", será:
Después de "git pull --rebase", no habrá punto de fusión G. Tenga en cuenta que D y E se convierten en confirmaciones diferentes:
fuente
git rebase
hace? Pero estamos hablando de esogit pull --rebase
. Y son cosas diferentes.En el caso más simple de no colisiones
Ver también:
man git-pull
Ver también: ¿
Cuándo debo usar git pull --rebase?
http://git-scm.com/book/en/Git-Branching-Rebasing
fuente
git sdd modified-file; git rebase --continue
o fusión:git add modified-file; git commit;
dondemodified-file
es su archivo local que modificar manualmente / mergetoolfetch
? ¿Por qué crearon dosrebase
flujos? 1)git rebase
y 2)git pull --rebase
?Para esto es importante entender la diferencia entre Merge y Rebase.
Para más detalles, consulte: http://www.derekgourlay.com/archives/428
fuente