Cuando empuja una rama con Magit (con P P
) y la rama no tiene corriente arriba, Magit le pregunta el nombre de la rama a la que desea empujar. Eso es genial.
Sin embargo, una vez que configura el flujo ascendente para una rama, Magit ya no le pregunta dónde desea empujarlo. Esto suele ser conveniente (no desea que se le pregunte siempre), pero hace que sea difícil empujar una rama a una rama remota diferente.
¿Hay alguna manera de hacer que Magit me pregunte nuevamente sobre la sucursal de destino, incluso si la sucursal actual ya tiene un flujo ascendente?
Caso de uso
Es bastante común que tenga una rama como esta:
Local: issue-30 ~/Git-Projects/repo/
Remote: issue-30 @ origin ([email protected]:.../repo.git)
Head: ebe4054 Some commit message
y quiero cambiar las ramas locales y remotas a issue-30-and-34
. Si solo cambio el nombre de la rama Local, me queda esto:
Local: issue-30-and-34 ~/Git-Projects/repo/
Remote: issue-30 @ origin ([email protected]:.../repo.git)
Head: ebe4054 Some commit message
Incluso si elimino origin/issue-30
, haciendo P P
de issue-30-and-34
simplemente recrear el origin/issue-30
.
Lo que termino haciendo es lo siguiente, pero parece algo indirecto para algo que se puede hacer en un solo git
comando:
- Cree una nueva rama llamada
issue-30-and-34
(en lugar de renombrar la antigua), - eliminar versiones locales y remotas de
issue-30
, - empujar
issue-30-and-34
(ya que todavía no tiene corriente arriba, Magit me preguntará dónde empujar).
Respuestas:
Comenzando con
v2.1
usted, puede cambiar el flujo ascendente de la rama actual a una rama remota o local utilizando bu[REMOTE/]BRANCH
RET. Comenzando conv2.4
, si un flujo ascendente ya está configurado, busimplemente lo desarmará. Presione unuevamente para establecer un nuevo valor.Comenzando con
v2.4
y si el flujo ascendente no está configurado, también puede configurarlo mientras presiona usando pu[REMOTE/]BRANCH
RET. Se le preguntará automáticamente qué rama usar como flujo ascendente. Una vez que se ha establecido un flujo ascendente, pulo empujará sin permitirle cambiar el flujo ascendente. Entonces, para cambiar el flujo ascendente, debe utilizar el enfoque descrito en el párrafo anterior.Antes
v2.4
también era posible establecer la rama remota que está presionando como la rama ascendente que usa p-ueREMOTE/BRANCH
RET. Pero ahora el--set-upstream
interruptor ya no está disponible en la ventana emergente push de forma predeterminada . Puede recuperarlo estableciéndolomagit-push-current-set-remote-if-missing
en nulo. Eso tiene dos efectos: el--set-upstream
interruptor estará disponible nuevamente después del próximo reinicio y el enfoque descrito en el párrafo anterior ya no funcionará.Si desea que ambas funciones descritas en el segundo y tercer párrafo estén disponibles al mismo tiempo,
magit-push-current-set-remote-if-missing
no toque y agregue esto a su archivo init:fuente
Presione "
P C-u C-u P
" para que Magit le pregunte qué rama remota y remota usar antes de presionar.(Con un solo argumento de prefijo ("
P C-u P
") Magit pregunta qué control remoto usar).Encontré esto presionando
P C-h k P
un búfer de estado Magit, leyendo los documentos demagit-push
ymagit-push-dwim
(estos documentos parecen estar desactualizados, por cierto) y experimentando.PD: yo uso Magit
magit-1.2.0-2049-ge6839e8
.fuente
Parece que ahora está debajo de la sección rama / configuración:
b
C
p
para configurar el pushRemotefuente
A partir de noviembre de 2016, y la última
magit
, esta es una solución parcial:P
e
- te permite empujarelsewhere
, pero no se recuerdaNo pude encontrar una manera para que Magit lo hiciera
--set-upstream
, así que solo hice esto desde la terminal, como una trampa, pero me superó este problema:git push --set-upstream origin <branch-name>
Y ahora se guarda el nuevo flujo ascendente, y puedo construir mi siguiente cosa :)
fuente
--set-upstream
" - Quizás deberías intentar leer la respuesta de tarsiusmagit
ha cambiado un poco desde entonces, y mi esperanza es que mi solución ahorra alguien unos cuantos minutos extra