Me he estado preguntando si hay una manera fácil de empujar y extraer una rama local con una rama remota con un nombre diferente sin especificar siempre ambos nombres.
Por ejemplo:
$ git clone myrepo.git
$ git checkout -b newb
$ ...
$ git commit -m "Some change"
$ git push origin newb:remote_branch_name
Ahora, si alguien actualiza remote_branch_name, puedo:
$ git pull
Y todo está fusionado / adelantado. Sin embargo, si hago cambios en mi "newb" local, no puedo:
$ git push
En cambio, tengo que:
% git push origin newb:remote_branch_name
Parece un poco tonto. Si se git-pullusa git-config branch.newb.mergepara determinar de dónde sacar, ¿por qué no podría git-pushtener una opción de configuración similar? ¿Hay un buen atajo para esto o debería continuar el camino largo?
fuente

git push buildserver .:test_thisdónde.estará el nombre de la sucursal local que no necesariamente conozco. Podría buscarlo, claro, pero si hubiera una mano corta, como el punto, para eso, sería genial.HEADes la taquigrafía que estás buscando.HEADes lo que apunta a la rama actualmente desprotegida, o directamente a una confirmación particular si tiene una cabeza separada.Updates were rejected because a pushed branch tip is behind its remoteerror para mí. Mi repositorio local estaba actualizado, pero los nombres eran simplemente diferentes.Cuando realice el empuje inicial, agregue el parámetro -u :
Los empujones posteriores irán a donde quieras.
EDITAR:
Según el comentario, eso solo establece pull.
Deberías hacerlo.
fuente
-usolo establece el flujo ascendente, que según la pregunta, ya está configurado. Se necesita conjuntopush.defaultaupstremfin de obtenerpusha respetar el entorno aguas arriba, ya que por defecto sólo sepullhace.git branch --set-upstreamsea necesario. Nota: migit --versiones 2.17.1.El comando de Adam ahora está en desuso. Puedes usar:
para establecer la rama aguas arriba de
my_local_branchtoorigin/my_remote_branch.fuente
Aquí está el proceso que me ha funcionado.
Ahora su nuevo repositorio será 'origen' y el repositorio original está 'corriente arriba'. Confirme ejecutando git remote -v. (Nota al margen: Upstream se utiliza para recuperar el repositorio original, para mantener su copia local sincronizada con el proyecto al que desea contribuir, y el origen se utiliza para extraer y empujar, ya que puede contribuir a su propio repositorio).
git push origin masterAhora el nuevo maestro de tu repositorio remoto (en Github) estará sincronizado con el maestro original, pero no tendrá ninguna de las ramas de funciones.
Rebase es una fusión inteligente. Luego presione para masterizar nuevamente y verá la rama de la función seleccionada como master en el nuevo repositorio.
Opcional:
fuente
Me he encontrado con el mismo problema desde hace bastante tiempo. Finalmente tengo un conjunto de declaraciones, así que no tengo que hacerlo
git push origin local:remotetodo el tiempo. Seguí estos:Después de configurar el flujo ascendente a una rama remota con un nombre diferente (primera línea) y luego hacer que el flujo ascendente sea el predeterminado (segunda línea), la tercera línea ahora obedecerá estas reglas y avanzará al conjunto ascendente.
fuente