¿Es posible confirmar e impulsar cambios de una rama a otra?
Supongamos que he cometido cambios en BRANCH1 y quiero empujarlos a BRANCH2 .
Desde BRANCH1 , ¿es válido hacer:
git push origin **BRANCH2**
¿Y luego restablecer BRANCH1?
git
git-branch
jviotti
fuente
fuente
branch1
ybranch2
necesitan estar en el control remoto? ¿Qué pasa si quieres pasar de localbranch1
a remotoorigin branch2
?<remote>/<branch>
git push origin :branch2
pensando que simplemente empujaría la rama local actual al control remotobranch2
, que en cambio eliminará el control remotobranch2
! La forma correcta esgit push origin HEAD:branch2
.Ciertamente, aunque solo funcionará si es un avance rápido de BRANCH2 o si lo fuerza. La sintaxis correcta para hacer tal cosa es
Consulte la descripción de un "refspec" en la página de manual de git push para obtener más detalles sobre cómo funciona. También tenga en cuenta que tanto un empuje forzado como un reinicio son operaciones que "reescriben el historial", y no deben intentarse por un corazón débil a menos que esté absolutamente seguro de saber lo que está haciendo con respecto a los repositorios remotos y otros personas que tienen tenedores / clones del mismo proyecto.
fuente
git push --force remote local-branch:remote-branch
.Es muy simple. Suponga que ha realizado cambios en su Rama A, que reside tanto en el lugar local como en forma remota, pero desea enviar estos cambios a la Rama B, que no existe en ninguna parte.
Paso 01: crea y cambia a la nueva rama B
Paso-02: Agregar cambios en la nueva sucursal local
Paso 03: comprometer los cambios
Paso-04: Empuje cambios en la nueva rama B . El siguiente comando creará una nueva rama B de forma remota
Ahora, se puede verificar de bitbucket que la rama B tendrá una más que comprometen la rama A . Y cuando vas a la comprobación de la rama A estos cambios no estarán allí ya que estos han sido empujados a la rama B .
Nota: Si ha confirmado sus cambios en la rama A y luego desea cambiar esos cambios a la nueva rama B , primero deberá restablecerlos. #Feliz aprendizaje
fuente
En mi caso, tuve una confirmación local, que no se presionó
origin\master
, sino que se comprometió con mimaster
sucursal local . Este compromiso local ahora debe ser empujado a otra rama.Con Git Extensions puedes hacer algo como esto:
También puede hacerlo en la línea de comando GIT . Ejemplo copiado de David Christensen :
fuente
Obtuve un mal resultado con el
git push origin branch1:branch2
comando:En mi caso,
branch2
se elimina ybranch1
se ha actualizado con algunos cambios nuevos.Por lo tanto, si solo desea que los cambios se envíen
branch2
desdebranch1
, intente los siguientes procedimientos:branch1
:git add .
branch1
:git commit -m 'comments'
En
branch1
:git push origin branch1
En
branch2
:git pull origin branch1
Activado
branch1
: vuelve al commit anterior.fuente
puedes hacer esto fácilmente
fuente
fuente
¿Te has comprometido con BRANCH1 y quieres deshacerte de este compromiso sin perder los cambios? git reset es lo que necesitas. Hacer:
si quieres que BRANCH2 sea una nueva sucursal. También puede fusionar esto al final con otra rama si lo desea. Si BRANCH2 ya existe, deje este paso fuera.
Entonces hazlo:
si desea restablecer la confirmación en la rama que ha confirmado. Esto toma los cambios de los últimos tres commits.
Luego haga lo siguiente para llevar los commits restablecidos a BRANCH2
Esta fuente fue útil: https://git-scm.com/docs/git-reset#git-reset-Undoacommitmakingitatopicbranch
fuente