Cómo copiar una rama Git local a un repositorio remoto


He tomado los siguientes pasos hasta ahora:

  1. Clonado un repositorio Git remoto
  2. Ramificó la rama maestra a una
  3. código editado/probado / confirmado en la rama experimental

Ahora, no estoy listo para fusionar experimental en master. Sin embargo, quiero volver al repositorio remoto, ya que es el repositorio que comparto con algunos colegas. Me gustaría que vieran lo que he hecho en la rama experimental. Normalmente solo tengo acceso al repositorio remoto via SSH.

¿Cómo puedo compartir mi rama local en el repositorio remoto, sin afectar a la rama maestra del repositorio remoto?

Author: Teun Zengerink, 2009-04-30

5 answers

De acuerdo con la página de manual de git push :

 git push origin experimental

Encuentre una referencia que coincida con experimental en el repositorio de origen (lo más probable es que encuentre refs/heads/experimental), y actualice la misma referencia (por ejemplo, refs/heads/experimental) en el repositorio de origen con ella.
Si experimental no existiera remotamente, se crearía.

Esto es lo mismo que:

git push origin experimental:refs/heads/experimental

Cree la rama experimental en el repositorio origin copiando la rama actual experimental.
Este formulario es solo necesario para crear un nuevo rama o etiqueta en el repositorio remoto cuando el nombre local y el nombre remoto son diferentes; de lo contrario, el nombre ref por sí solo funcionará.

O, como se menciona en git tip , puede configurar un "Control remoto predeterminado de la rama":

Puedes usar git config para asignar un control remoto predeterminado a una rama determinada. Este control remoto predeterminado se utilizará para enviar esa rama a menos que se especifique lo contrario.

Esto ya está hecho para ti cuando usas git clone, permitiendo debe usar git push sin ningún argumento para empujar la rama maestra local para actualizar la rama maestra del repositorio de origen.

git config branch.<name>.remote <remote> 

Se puede usar para especificar esto manualmente.


Jan sugiere (para git >= 1.7.0) la opción push -u (o push --set-upstream):

Para cada rama que está actualizada o enviada con éxito, agregue la referencia de upstream (tracking), usada por git-pull(1) y otros comandos.

Que way, no tienes que hacer ninguna configuración de git.

git push -u origin experimental
 156
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:00

Si el nombre de tu rama es experimental, y el nombre del control remoto es origin, entonces

git push origin experimental
 15
Author: John Douthat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-30 03:21:41

git push -u <remote-name> <branch-name> no funciona si la rama recién creada no se genera desde el mismo repositorio, es decir, si no ha creado la nueva rama usando git checkout -b new_branch, entonces esto no funcionará.

Por ejemplo, había clonado dos repositorios diferentes localmente y tuve que copiar repo2/branch1 a repo1/ y luego empujarlo también.

Este enlace me ayudó a empujar mi rama local (clonada de otro repositorio) a mi repositorio remoto:

 1
Author: brokenfoot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-24 22:12:23

Aquí está la página autorizada de github para github remote management http://github.com/guides/push-a-branch-to-github . Te ayudará a responder todas tus preguntas.

 0
Author: dylanfm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-25 12:32:38

Tl; dr

$ git push --set-upstream origin your_new_branch

Más información

Después de haber hecho pocos commits en su:

$ git checkout -b your_new_branch
$ git add file
$ git commit -m "changed file"

Envías tu rama especificando un upstream a uno de los repositorios remotos como sigue:

$ git push --set-upstream REMOTE YOUR_BRANCH

Los controles remotos pueden ser vistos por

$ git remote -v

Por lo general, tendrá un solo control remoto predeterminado origin. así que el comando se vería como:

$ git push --set-upstream origin your_new_branch

Y todos los empujes consecuentes se pueden hacer solo con git push.

 0
Author: Ivan Prisyazhnyy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-19 09:08:15