Cómo combinar el maestro remoto con la rama local


Tengo una rama local de un proyecto ("Configudate") que he bifurcado del proyecto de otra persona y he hecho un montón de cambios en él y me gustaría fusionar los cambios que han hecho en mi rama local.

He intentado

git pull --rebase origin configUpdate

Pero no ha tomado los últimos cambios - ¿cómo puedo fusionar los dos? (también para los puntos de bonificación, ¿qué hice con el comando pull --rebase?)

Author: Alex Cio, 2011-08-26

4 answers

Qué tal (suponiendo que esté actualmente en la rama configUpdate):

git fetch
git rebase origin/master

En pocas palabras:

  • git merge branchname toma nuevas confirmaciones de la rama branchname, y las añade a la rama actual. Si es necesario, agrega automáticamente una confirmación "Merge" en la parte superior.

  • git rebase branchname toma nuevas confirmaciones de la rama branchname, y las inserta "bajo" sus cambios. Más precisamente, modifica la historia de la rama actual de tal manera que se basa en la punta de branchname, con cualquier cambio que hayas hecho encima de eso.

  • git pull es básicamente lo mismo que git fetch; git merge origin/master.

  • git pull --rebase es básicamente lo mismo que git fetch; git rebase origin/master.

Entonces, ¿por qué querrías usar git pull --rebase en lugar de git pull? He aquí un ejemplo sencillo:

  • Empiezas a trabajar en una nueva función.

  • Para cuando estés listo para enviar tus cambios, varios commits han sido enviados por otros desarrolladores.

  • Si usted git pull (que usa merge), tus cambios serán enterrados por las nuevas confirmaciones, además de una confirmación de fusión creada automáticamente.

  • Si git pull --rebase en su lugar, git adelantará su maestro a los de upstream, luego aplicará sus cambios en la parte superior.

 288
Author: Joey Adams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-26 06:44:25

Descubrí que era:

$ git fetch upstream
$ git merge upstream/master
 68
Author: Martyn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-26 06:29:07

Cambie a su rama local

> git checkout configUpdate

Fusiona remote master con tu rama

> git rebase master configUpdate

En caso de que tenga algún conflicto, corríjalo y para cada archivo en conflicto haga el comando

> git add [path_to_file/conflicted_file] (por ejemplo, git add app/assets/javascripts/test.js)

Continuar rebase

> git rebase continue continue

 32
Author: Serge Seletskyy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-23 11:48:49

Git rebase no parecía funcionar para mí. Después de git rebase, cuando intento enviar cambios a mi rama local, me seguía dando un error ("pista: Las actualizaciones fueron rechazadas porque la punta de tu rama actual está detrás de su contraparte remota. Integre los cambios remotos (por ejemplo, ' git pull ...') antes de empujar de nuevo.") incluso después de git pull. Lo que finalmente funcionó para mí fue git merge.

git checkout <local_branch>
git merge <master> 

Si eres un principiante como yo, aquí tienes un buen artículo sobre git merge vs git rebase. https://www.atlassian.com/git/tutorials/merging-vs-rebasing

 9
Author: AJC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-05 21:34:28