Tengo una rama local de un proyecto ("configUpdate") que he bifurcado del proyecto de otra persona y he realizado una gran cantidad de cambios y me gustaría fusionar los cambios que han realizado en mi rama local.
He intentado
git pull --rebase origin configUpdate
pero no ha captado los últimos cambios, ¿cómo puedo fusionar los dos? (también para puntos de bonificación, ¿qué hice con el pull --rebase
comando?)
Respuestas:
Desde su rama de características (por ejemplo
configUpdate
) ejecute:O la forma más corta:
Por qué esto funciona:
git merge branchname
toma nuevas confirmaciones de la ramabranchname
y las agrega a la rama actual. Si es necesario, agrega automáticamente una confirmación "Fusionar" en la parte superior.git rebase branchname
toma nuevas confirmaciones de la ramabranchname
y las inserta "debajo" de sus cambios. Más precisamente, modifica el historial de la rama actual de modo que se base en la punta debranchname
, con cualquier cambio que haya realizado además 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é quieres usar en
git pull --rebase
lugar degit pull
? Aquí hay un ejemplo simple:Empiezas a trabajar en una nueva característica.
Para cuando esté listo para impulsar sus cambios, otros desarrolladores han impulsado varias confirmaciones.
Si usted
git pull
(que usa la combinación), sus cambios serán enterrados por las nuevas confirmaciones, además de una confirmación de fusión creada automáticamente.Si en su
git pull --rebase
lugar, git adelantará su maestro a los de arriba, luego aplicará sus cambios en la parte superior.fuente
Descubrí que era:
fuente
pull --rebase
no funcionó porqueorigin
estaba apuntando a su tenedor. Hubiera funcionado si lo hicierasgit pull --rebase upstream/master
.Cambie a su sucursal local
Fusiona master remoto con tu sucursal
En caso de que tenga algún conflicto, corríjalo y para cada archivo en conflicto ejecute el comando
Continuar rebase
fuente
git rebase no parecía funcionar para mí. Después de git rebase, cuando trato de enviar cambios a mi sucursal local, recibí un error ("pista: las actualizaciones fueron rechazadas porque la punta de su sucursal actual está detrás de su contraparte remota. Integre los cambios remotos (por ejemplo, 'git pull. .. ') antes de presionar nuevamente. ") incluso después de git pull. Lo que finalmente funcionó para mí fue git merge.
Si eres un principiante como yo, aquí hay un buen artículo sobre git merge vs git rebase. https://www.atlassian.com/git/tutorials/merging-vs-rebasing
fuente