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-pull
usa git-config branch.newb.merge
para determinar de dónde sacar, ¿por qué no podría git-push
tener 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_this
dó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.HEAD
es la taquigrafía que estás buscando.HEAD
es 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 remote
error 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
-u
solo establece el flujo ascendente, que según la pregunta, ya está configurado. Se necesita conjuntopush.default
aupstrem
fin de obtenerpush
a respetar el entorno aguas arriba, ya que por defecto sólo sepull
hace.git branch --set-upstream
sea necesario. Nota: migit --version
es 2.17.1.El comando de Adam ahora está en desuso. Puedes usar:
para establecer la rama aguas arriba de
my_local_branch
toorigin/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 master
Ahora 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:remote
todo 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