Para fusionar la rama actual en otra rama sin verificar la otra rama:
Combinación de avance rápido
Esto es realmente facil. Por definición, una combinación de avance rápido simplemente significa que el puntero de la rama se mueve hacia adelante en el árbol de confirmación. Entonces, todo lo que necesita hacer es simular eso:
git branch -f master dev
Advertencias: Esto supone que master
apunta a una confirmación que también está en una dev
rama o en alguna otra rama. ¡Si no lo hace, corre el riesgo de perder el trabajo! A diferencia de git merge
lo que creará una confirmación de fusión (o queja) cuando el avance rápido no es posible, este método obliga silenciosamente al puntero de la rama a apuntar a otra confirmación.
Esto también supone que eres el único que trabaja en el repositorio y / o sabes lo que estás haciendo.
Consejo: Si hiciste una git fetch
y tienes nuevas confirmaciones origin/master
, puedes mover la master
rama sin retirar usando:
git branch -f master origin/master
Fusionar mediante merge commit
Esto no siempre es posible. Para crear una confirmación de fusión, debe realizar una operación de fusión. Y para realizar una operación de fusión, debe tener confirmaciones en la otra rama que no están en la rama actual.
Si tiene commits en la master
rama que no están en la dev
rama, puede:
Descargo de responsabilidad: esto es simplemente una prueba de concepto, solo para mostrar que a veces es posible fusionar a la otra rama sin verificar. Si desea usarlo todos los días, probablemente quiera crear un alias para él utilizando la redirección de shell o hacer un script de shell para ello. Por otra parte, también puede hacer un script de shell para el proceso más corto que se muestra en la pregunta.
git checkout -b temp
git merge --no-ff -e master
git branch -f master temp
git checkout dev
git branch -D temp
Explicación:
- Echa un vistazo a una rama temporal que apunta a la misma confirmación que la rama actual.
Fusionarse master
en la rama temporal e iniciar el editor de mensajes de confirmación. Si desea que el compromiso de fusión se vea como si hubiera fusionado la dev
rama master
, edítelo a partir de esto:
Merge branch 'master' into temp
a esto:
Merge branch 'dev'
Consejo: puede usar en -m "Merge branch 'dev'"
lugar de -e
ser más rápido.
- Actualizar el
master
puntero de rama para apuntar a la confirmación de fusión.
- Echa un vistazo a la
dev
sucursal.
- Forzar la eliminación de la rama temporal.
Esto todavía toca su árbol de trabajo, pero mínimamente. No hace retroceder el árbol hasta el estado original master
solo para traer los cambios de desarrollo una vez más. Puede que a algunos no les importe, pero para otros puede ser importante.