He creado una rama local que quiero 'empujar' aguas arriba. Hay una pregunta similar aquí en Stack Overflow sobre cómo seguir una rama remota recién creada.
Sin embargo, mi flujo de trabajo es ligeramente diferente. Primero quiero crear una rama local, y sólo la empujaré aguas arriba cuando esté satisfecho y quiera compartir mi rama.
Actualización Con Git 2.0 hay una respuesta más sencilla que he escrito a continuación: https://stackoverflow.com/a/27185855/109305
En primer lugar, crea su rama localmente:
git checkout -b <branch-name> # Create a new branch and check it out
La rama remota se crea automáticamente cuando la empujas al servidor remoto. Así que cuando te sientas preparado para ello, sólo tienes que hacer:
git push <remote-name> <branch-name>
Donde <nombre-del-remote>
es típicamente origin
, el nombre que git da a la rama remota de la que has clonado. Tus compañeros entonces sólo tendrán que tirar de esa rama, y se creará automáticamente de forma local.
Sin embargo, ten en cuenta que, formalmente, el formato es:
git push <remote-name> <local-branch-name>:<remote-branch-name>
Pero cuando se omite uno, se asume que ambos nombres de rama son los mismos. Dicho esto, como precaución, no cometa el error crítico de especificar sólo :<nombre de rama remota>
(con los dos puntos), ¡o la rama remota será eliminada!
Para que un git pull
posterior sepa qué hacer, es posible que quieras usar:
git push --set-upstream <remote-name> <local-branch-name>
Como se describe a continuación, la opción --set-upstream
establece una rama upstream:
Para cada rama que se actualiza o se ha empujado con éxito, añade una referencia referencia (de seguimiento), utilizada por git-pull(1) sin argumentos y otros comandos.
En primer lugar, debe crear su rama localmente
git checkout -b your_branch
Después de eso, puedes trabajar localmente en tu rama, cuando estés listo para compartir la rama, haz push. El siguiente comando empuja la rama al origen del repositorio remoto y lo rastrea
git push -u origin your_branch
Los compañeros de equipo pueden llegar a su rama, haciendo:
git fetch
git checkout origin/your_branch
Puedes seguir trabajando en la rama y empujar cuando quieras sin pasar argumentos a git push (git push sin argumentos empujará el master al master remoto, tu_rama local a tu_rama remota, etc...)
git push
Los compañeros de equipo pueden hacer push a tu rama haciendo commits y luego hacer push explícitamente
... work ...
git commit
... work ...
git commit
git push origin HEAD:refs/heads/your_branch
O seguir la rama para evitar los argumentos de git push
git checkout --track -b your_branch origin/your_branch
... work ...
git commit
... work ...
git commit
git push
Como se ha dicho en las respuestas anteriores,
git push <remote-name> <local-branch-name>:<remote-branch-name>
es suficiente para empujar una rama local.
Tus compañeros, pueden sacar todas las ramas remotas (incluyendo las nuevas) con este comando:
git remote update
Luego, para hacer cambios en la rama, el flujo habitual:
git checkout -b <local-branch-name> <remote-name>/<remote-branch-name>