Tengo un proyecto clonado de una rama maestra del repositorio remoto remote_repo
. Creo una nueva rama y me comprometo con esa rama. Otros programadores empujaron remote_repo
a la rama maestra.
Ahora necesito volver a basar mi rama RB en remote_repo
master.
¿Como hacer esto? ¿Qué comandos escribir en una terminal?
git
clone
git-rebase
Damir
fuente
fuente
Respuestas:
Primero busque el nuevo maestro del repositorio ascendente, luego vuelva a basar su rama de trabajo en eso:
Actualización : consulte la respuesta de Paul Draper para obtener una forma más concisa de hacer lo mismo: las versiones recientes de Git proporcionan una forma más sencilla de hacer el equivalente de los dos comandos anteriores.
fuente
Your branch and 'origin/b1' have diverged, # and have 3 and 2 different commits each, respectively.
Parece quegit pull
se necesita otro . ¿Es correcto o me falta algo aquí?git rebase master
no realizará el mismo trabajo que el segundo comando (git rebase origin/master
) desde entoncesmaster
yorigin/master
bien puede apuntar a diferentes confirmaciones (especialmente dado que el primer comando fuegit fetch origin
, que puede modificarseorigin/master
).fuente
git pull --rebase=interactive origin master
dev
y ejecutogit pull --rebase origin master
, solodev
se modificará la rama , nomaster
. La--rebase
documentación de la bandera indica que intentarebase the current branch on top of the upstream branch after fetching
y nada acerca de modificar las ramas de seguimiento locales.Después de confirmar los cambios en su sucursal, finalice la compra
master
y tire de ella para obtener los últimos cambios del repositorio:Luego revise su sucursal y vuelva a clasificar sus cambios en
master
:... o los dos últimos comandos en una línea:
Al intentar retroceder
origin/RB
, probablemente obtendrá un error; Si eres el único trabajandoRB
, puedes forzar el empuje:... o de la siguiente manera si tiene git configurado adecuadamente:
fuente
git push
prescindir-f
).Nota: Si ya tiene un amplio conocimiento sobre rebase, use debajo de un revestimiento para un rebase rápido. Solución: suponiendo que está en su rama de trabajo y que es la única persona que trabaja en ella.
Resuelva cualquier conflicto, pruebe su código, confirme y envíe nuevos cambios a la sucursal remota.
Los siguientes pasos pueden ayudar a cualquiera que sea nuevo
git rebase
y quiera hacerlo sin problemasPaso 1: suponiendo que no hay confirmaciones y cambios que se realizarán en YourBranch en este momento. Estamos visitando YourBranch.
¿Que pasó? Extrae todos los cambios realizados por otros desarrolladores que trabajan en su sucursal y reajusta sus cambios sobre ella.
Paso 2: resuelve cualquier conflicto que se presente.
Paso 3:
¿Que pasó? Extrae todos los últimos cambios del maestro remoto y reajusta el maestro local en el maestro remoto. ¡Siempre mantengo el master remoto limpio y listo! Y, prefiera solo trabajar en master o sucursales localmente. Recomiendo hacer esto hasta que tenga una mano en los cambios o confirmaciones de git. Nota: Este paso no es necesario si no está manteniendo el maestro local, en su lugar, puede buscar y volver a crear un maestro remoto directamente en la sucursal local directamente. Como mencioné en un solo paso al comienzo.
Paso 4: resuelve cualquier conflicto que se presente.
Paso 5:
¿Que pasó? Rebase en master ocurre
Paso 6: resuelva cualquier conflicto, si hay conflictos. Use
git rebase --continue
para continuar el rebase después de agregar los conflictos resueltos. En cualquier momento puedes usargit rebase --abort
para abortar el rebase.Paso 7:
¿Que pasó? Empujando cambios a su remoto YourBranch.
--force-with-lease
se asegurará de que haya otros cambios entrantes para YourBranch de otros desarrolladores durante el cambio de nombre. Esto es súper útil en lugar de forzar el empuje. En caso de que haya cambios entrantes, instálelos para actualizar su YourBranch local antes de enviar los cambios.¿Por qué necesito impulsar los cambios? ¿Para reescribir el mensaje de confirmación en YourBranch remoto después de un cambio apropiado o si hay algún conflicto resuelto? Luego, debe enviar los cambios que resolvió en el repositorio local al repositorio remoto de YourBranch
Yahoooo ...! Has terminado con éxito el rebase.
También podrías estar buscando hacer:
¿Cuándo y por qué? Combine su sucursal en maestra si lo hace con usted y otros co-desarrolladores. Lo que hace que YourBranch esté actualizado con master cuando quería trabajar en la misma sucursal más tarde.
fuente
Pulls latest changes from remote master to local master. I always prefer keeping remote master clean and release ready always!
. Actualizaré mi descripción.Paso 1:
Paso 2:
Paso 3: (Repara si hay conflictos)
Paso 4:
Paso 5:
fuente
1.Actualice Master primero ...
2. Ahora rebase la fuente-rama con la rama maestra
Si la rama fuente aún no existe en el control remoto, entonces:
"et voila ..."
fuente
git fetch origin master:master
extrae la última versión de master sin necesidad de comprobarlo.Entonces todo lo que necesitas es:
git fetch origin master:master && git rebase master
👌fuente
git fetch
actualiza el maestro sin necesidad de comprobarlo también? Excepto quegit fetch
no lo hacegit merge
la derecha las actualizaciones? Entonces, si pagamosmaster
, no tendrá las últimas actualizaciones. Entonces, ¿no es más corto hacerlo en la rama de características,git fetch
entoncesgit rebase origin/master
? No podemos hacerlogit rebase master
porque eso intentará rebasear desde elmaster
espacio de trabajo, tenemosorigin/master
que salir de lo no fusionado pero sentado en lo local.