Crear una sucursal en Git de otra rama
-
11-10-2019 - |
Pregunta
Tengo dos ramas: principal y dev
Quiero crear una "rama de la característica" de la dev rama.
Actualmente en el dev rama, que hago:
$ git checkout -b myfeature dev
... (un trabajo)
$ git commit -am "blablabla"
$ git push origin myfeature
Sin embargo, después de la visualización de mis ramas, que tengo:
--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**
Me refiero a que la rama parece ff fusionaron, y yo no entiendo por qué ...
Lo que estoy haciendo mal?
¿Me puede explicar por favor cómo se ramifican desde otra rama de la espalda y empujar al repositorio remoto para la rama de la característica?
Todo lo que en un modelo de ramificación como el descrito aquí .
Solución
Si te gusta el método en el enlace que has enviado, echar un vistazo a Git flujo .
Es un conjunto de secuencias de comandos que creó para ese flujo de trabajo.
Sin embargo, para responder a su pregunta:
$ git checkout -b myFeature dev
Crea rama MyFeature fuera prog. Hacer su trabajo y luego
$ git commit -am "Your message"
Ahora fusionar los cambios en dev sin un avance rápido
$ git checkout dev
$ git merge --no-ff myFeature
Ahora empujar cambios en el servidor
$ git push origin dev
$ git push origin myFeature
y verá que la forma en que lo desee.
Otros consejos
Si desea crear una nueva rama de cualquiera de las ramas existentes en Git, sólo tienes que seguir las opciones.
En primer lugar / cambio de la caja en la rama desde la que desea crear una nueva rama. Por ejemplo, si usted tiene las siguientes ramas como:
- principal
- dev
- BRANCH1
Así que si desea crear una nueva rama llamada "subbranch_of_b1" en la rama llamada "BRANCH1" seguir los pasos:
-
Checkout o cambio en "BRANCH1"
git checkout branch1
-
Ahora crear su nueva rama llamada "subbranch_of_b1" en la "BRANCH1" con el siguiente comando.
git checkout -b subbranch_of_b1 branch1
El anterior creará una nueva rama llamada subbranch_of_b1 en la rama BRANCH1 (nota que
branch1
en el comando anterior no es obligatorio puesto que la cabeza está apuntando a ella , puede precisa que si están en una rama diferente, sin embargo). -
Ahora, después de trabajar con el subbranch_of_b1 usted puede comprometerse y empuje o fusionarla forma local o remota.
empuje el subbranch_of_b1 a distancia
git push origin subbranch_of_b1
crear una rama
- Crear rama rama principal cuando está desprotegido. Aquí comete en maestro se sincronizarán con la rama que ha creado.
$ git branch branch1
- Crea la rama cuando BRANCH1 está desprotegido. Aquí comete en BRANCH1 se sincronizarán con BRANCH2
$ git branch branch2
Pedido de una rama
git checkout ramas del interruptor de mando o restaurar los archivos del árbol de trabajo
-
$ git checkout branchname
Cambiar el nombre de una rama
-
$ git branch -m branch1 newbranchname
Eliminar una rama
-
$ git branch -d branch-to-delete
-
$ git branch -D branch-to-delete
( eliminación fuerza sin comprobar el estado resultante de la fusión )
Crear e interruptor Branch
-
$ git checkout -b branchname
Ramas que están completamente incluidos
-
$ git branch --merged
************************** Diferencias Branch [git diff branch1..branch2] **** ********************
diferencia Multilínea-
$ git diff master..branch1
-
$ git diff --color-words branch1..branch2
Do en la rama dev
. Lo que ocurre es que en el escenario de las sucursales función se mueve hacia adelante desde la punta de la rama dev, pero la rama dev no cambia. Es más fácil dibujar como una línea recta, ya que puede ser pensado como el movimiento hacia adelante. Usted lo hizo al punto A en dev, y desde allí se limitó a seguir en un camino paralelo. Las dos ramas en realidad no han divergido.
Ahora, si usted hace un commit en dev, antes de la fusión, que comenzarán nuevamente al mismo cometer, A, pero ahora cuenta se destinará a C y dev a B. Esto mostrará la división que está tratando de visualizar, como las ramas han divergido.
*-----*Dev-------*Feature
Versus
/----*DevB
*-----*DevA
\----*FeatureC
Git 2.23 introduce git switch
y git restore
para dividir las responsabilidades de git checkout
Creación de una nueva rama de una rama existente como de git 2.23:
git switch -c my-new-branch
Al cambiar a una nueva rama 'mi-new-rama'
- -c es la abreviatura de - crear y sustituye a la conocida git checkout -b
Tome un vistazo a este Github entrada de blog que explica los cambios en detalle más:
2,23 Git trae un nuevo par de comandos experimentales para la suite de existir los: interruptor de git y GIT restaurar . Estos dos están destinados a la larga proporcionar una mejor interfaz para el git checkout bien conocido. El nuevo comandos tienen la intención de cada una separación clara, perfectamente divvying lo que las muchas responsabilidades de git checkout
Si desea hacer una rama de alguna otra rama a continuación, siga los pasos abajo:
Supuestos
- Ahora mismo estás en la rama principal.
- No tiene cambios a cometer. (Si usted tiene cualquier cambio a cometer, esconderla!).
-
BranchExisting
es el nombre de la rama de la que se necesita para hacer una nueva rama con nombreBranchMyNew
.
Pasos
-
Obtener la rama en el equipo local.
$ git fetch origin BranchExisting : BranchExisting
Este comando creará una nueva sucursal en su localidad con el mismo nombre rama.
-
Ahora, desde la caja rama principal a la rama recién descabellada
$ git checkout BranchExisting
-
Ahora se encuentra en BranchExisting. Ahora crea una nueva rama de esta rama existente.
$ git checkout -b BranchMyNew
Aquí tienes!
Para la creación de una rama de otra se puede utilizar esta sintaxis, así:
git push origin refs/heads/<sourceBranch>:refs/heads/<targetBranch>
Es un poco más corto que "git checkout -b" + "origen git push"