Magit: ¿cómo puedo pagar una sucursal remota localmente sin escribir el nombre completo de la sucursal?

12

Tengo una sucursal remota remote-branch-long-name. Cuando finalizo la compra con la finalización del timón, puedo escribir remote-branchy origin/remote-branch-long-nameaparecerá como una opción. El problema es que para pagar esta rama localmente, en realidad no puedo cambiar a esa rama, necesito cambiarla remote-branch-long-name (without the origin/ prefix), ya que helm no proporciona eso como una opción de finalización, tengo que escribir manualmente el nombre completo de la rama.

¿Hay otra función que debería usar para este caso de uso o tengo que hackear una función juntos?

irregular
fuente

Respuestas:

22

Parece que el problema que está tratando de resolver no es el problema que está encontrando. Git no le permite trabajar localmente con sucursales remotas (lo origin/remote-branch-long-nameque ve es solo una rama de seguimiento; no puede trabajar con ella directamente) y Magit lo está guiando hacia el flujo de trabajo previsto.

Dado que desea trabajar con origin/remote-branch-long-nameusted, probablemente debería ejecutar magit-branch-and-checkout( b c). Seleccione origin/remote-branch-long-namey le solicitará el nombre de una sucursal local y el valor predeterminado será "nombre-sucursal-remota-larga". Esto le da a la sucursal local la necesidad de hacer sus cambios. Cuando haya terminado con sus cambios y presione para origin/remote-branch-long-nameactualizar la rama de seguimiento remoto.

Puede tener sucursales locales con una barra oblicua, pero usar un nombre remoto en el nombre de una sucursal local puede hacer que las cosas sean muy confusas. Git recuerda desde qué remoto se desprotegió una sucursal local, por lo que no necesita rastrearla usted mismo.

Para obtener una explicación más completa que mi respuesta aquí (!), Encontrará esta página como una buena descripción general de los controles remotos.

ebpa
fuente
77
Creo que la desconexión aquí es que el flujo de Magit es diferente del flujo de git. Si ejecuta git checkout foo, y foono es una rama, pero lo origin/fooes, git creará una nueva rama fooy la configurará para rastrear origin/foo. Entonces git te enseña a pensar "Acabo de pagar foo, y git hace todo lo necesario". Pero esto no funciona con magit; correr magit-branch-and-checkoutes el camino a seguir.
zck
4

Desde magit v2.12.0, hay un comando magit-branch-checkout, vinculado a b l(Checkout local branch), que hace exactamente lo que desea. Ver el documento para más detalles.

Emoses
fuente