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
?)
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 ramabranchname
, 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 ramabranchname
, 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 debranchname
, con cualquier cambio que hayas hecho encima de eso.git pull
es básicamente lo mismo quegit fetch; git merge origin/master
.git pull --rebase
es básicamente lo mismo quegit 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.
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
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
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
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