Por lo que recuerdo, si estoy trabajando en una rama, por ejemplo, my-feature-branch
solía poder hacer esto desde el magit-status
menú P P
y luego seleccionar la rama remota de una lista que estaba origin/my-feature-branch
en la parte superior. Esto funcionó muy bien.
Recientemente, a partir de esta discusión , pude hacer algo similar con P -u e
(abrir magit-push-popup
, configurar la --set-upstream
bandera y usarlo e
en otro lugar), lo que me permitiría elegir de una lista de ramas que comienzan con origin/my-feature-branch
. Esto funcionó bien para mí también. Sin embargo, incluso más recientemente, esto ya no funciona, y no he podido encontrar la mejor manera de establecer una rama ascendente.
Cuando uso P e
la primera opción para que una rama empuje es origin/my-feature-branch
, que es casi siempre lo que quiero. Sin embargo, no se establece origin/my-feature-branch
como el flujo ascendente para mi sucursal local. El uso P u
me permite elegir la rama ascendente, pero origin/my-feature-branch
no está en la lista, y tengo que escribir origin/my-feature-branch
sin completar la pestaña (sé que esto no es difícil, pero es propenso a errores de usuario y es más lento que la línea de comando).
¿Es esta la única forma de establecer una rama ascendente ahora, o me falta algo? He examinado otras discusiones y documentación relacionada con el tema, pero todas las fuentes que he encontrado parecen estar desactualizadas.
<remote>/<branch>
parte se dejó accidentalmente fuera de la solicitud (vea este comentario ). Mientras tanto, puede establecermagit-push-current-set-remote-if-missing
en cero.Respuestas:
Hay varias formas de configurar el flujo ascendente, mientras empuja o no empuja al mismo tiempo.
Si
magit-push-current-set-remote-if-missing
no esnil
(el valor predeterminado), verá algo como:Para presionar
origin/feature
y configurarlo como ascendente, presione uy luego RETacepte el candidato de finalización predeterminado.Si
magit-push-current-set-remote-if-missing
es asínil
, entonces verías esto en su lugar:Si presionó pahora, se le informaría que el flujo ascendente no está configurado (lo que implica que no puede empujar al flujo ascendente si no hay flujo ascendente).
Pero si
magit-push-current-set-remote-if-missing
es asínil
, entonces la lista de interruptores aparecería--set-upstream
, por lo que podría usarla P - u pcomo está acostumbrado (excepto que la segunda p está en minúsculas). Sin embargo, hay una complicación: después de cambiar el valormagit-push-current-set-remote-if-missing
, debe reiniciar Emacs para--set-upstream
que aparezca o desaparezca.Finalmente, puede definir el sentido ascendente utilizando el "conjunto de aguas arriba (y no hacer nada más)" comando: b u
origin/master
RET. Tenga en cuenta que cuando utiliza este enfoque, solo puede seleccionar una rama que ya existe.Pero sería mejor configurar el control remoto push y presionar para eso. Para obtener más información sobre el control remoto push y cómo difiere del flujo ascendente, consulte el nodo Branching en el manual de información (la versión web aún no se ha actualizado).
Básicamente, la bifurcación ascendente es la bifurcación en la que la bifurcación de características eventualmente se fusionará (fusionando o rebase, no presionando), lo más probable
origin/master
. Y el mando a distancia es donde empujas tus ramas de características mientras aún trabajas en ellas o para que alguien más pueda fusionarlas. Si se nombra la rama localfeature
y el push-remote lo esmy-fork
, entonces presionar esa rama usando P pempujaría amy-fork/feature
. (El "push-to-branch" no se puede configurar, el nombre de la sucursal en el push-remote siempre es el mismo que el nombre local).Entonces, si bien su pregunta era algo así como "cómo presiono hacia arriba, mientras configuro el flujo hacia arriba al mismo tiempo", mi recomendación es no presionar hacia arriba, sino presionar hacia el control remoto.
Siempre que no haya cambiado el valor de
magit-push-current-set-remote-if-missing
usted, puede configurar el mando a distancia mediante P psome-remote
RET. Pero, dado que probablemente empuje todas las ramas de funciones al mismo control remoto, es mejor configurar el control remoto de empuje una vez para todas las ramas y terminar con él: by luego M-phasta que se seleccione el control remoto correcto.También tenga en cuenta que generalmente no debería ser necesario establecer explícitamente la rama ascendente. Cuando crea una nueva rama y selecciona una rama remota como punto de partida, entonces se usa como flujo ascendente.
Desafortunadamente, el punto de partida generalmente es una rama local y, en ese caso, Git por defecto no lo usa como el flujo ascendente. Pero eso se puede solucionar fácilmente ejecutando esto una vez:
El valor predeterminado es
true
, que significa "establecer el punto de partida como ascendente, siempre que sea una rama remota ".Por cierto, lo mismo se aplica al push-remote. Eso también debería establecerse semiautomáticamente en repositorios "nuevos". Si clona un repositorio, se le preguntará si desea usarlo
origin
como control remoto push. Debería responder "sí", a menos que vaya a agregar otro control remoto, por ejemplomy-fork
, que debe usarse como control remoto push. Cuando agrega un nuevo control remoto usando M ayremote.pushDefault
aún no está configurado, se le preguntará si desea usar el control remoto recién agregado como control remoto push.Esto se puede configurar con
magit-clone-set-remote.pushDefault
ymagit-remote-add-set-remote.pushDefault
.Otra opción avanzada es
magit-branch-prefer-remote-upstream
, que por defecto esnil
. Si lo establece ent
, y luego selecciona una rama local como punto de partida para una nueva rama, entonces el flujo ascendente del punto de inicio podría (según algunas reglas, ver cadena de documentos) como flujo ascendente, en lugar de El punto de partida mismo.fuente