Con Git 2.15 (Q4 2017), " git branch" aprendió " -c/-C" a crear una nueva sucursal copiando una existente.
Ver commit c8b2cec (18 de junio de 2017) por Ævar Arnfjörð Bjarmason ( avar) .
Ver commit 52d59cc , commit 5463caa (18 de junio de 2017) por Sahil Dua ( sahildua2305) .
(Fusionada por Junio C Hamano - gitster- en commit 3b48045 , 03 oct 2017)
branch: agrega una opción --copy( -c) para ir con --move( -m)
Agregue la capacidad a --copyuna rama y su reflog y configuración, esto usa la misma maquinaria subyacente que la opción --move( -m) excepto que el reflog y la configuración se copian en lugar de moverse.
Esto es útil para, por ejemplo, la copia de una rama puntual a una nueva versión, por ejemplo, workpara work-2después de presentar el worktema a la lista, mientras que preserva toda la información de seguimiento y otra configuración que va con la rama, y al contrario que --movemanteniendo la otra rama presentado ya-en torno a referencia.
Nota: al copiar una rama, permanece en su rama actual.
Como explica Junio C Hamano:
Al crear una nueva rama Bcopiando la rama Aque resulta ser la rama actual, también se actualiza HEADpara apuntar a la nueva rama.
Probablemente se hizo de esta manera porque " git branch -c A B" superpuso su implementación en " git branch -m A B",
Esto no coincide con la expectativa habitual.
Si estuviera sentado en una silla azul, y alguien viene y lo vuelve a pintar en rojo, aceptaría terminar sentado en una silla que ahora es roja (en cambio, también estoy de acuerdo, ya que ya no hay mi silla azul favorita )
Pero si alguien crea una nueva silla roja, modelándola después de la silla azul en la que estoy sentado, no espero que la arranquen de la silla azul y termine sentada en la nueva roja.
git branch -c A B. Vea mi respuesta a continuación