web-dev-qa-db-fra.com

Comment copier une branche Git locale sur un dépôt distant

J'ai pris les mesures suivantes jusqu'à présent:

  1. Cloné un dépôt Git distant
  2. Branchée de la branche master à un expérimental
  3. code édité/testé/engagé dans la branche expérimentale

Maintenant, je ne suis pas prêt à fusionner expérimental en maître. Cependant, je souhaite le repousser vers le dépôt distant, car il s'agit du référentiel que je partage avec quelques collègues. J'aimerais qu'ils voient ce que j'ai fait dans la branche expérimentale. En règle générale, je viens d'accéder au référentiel distant via SSH. 

Comment partager ma branche locale sur le référentiel distant sans affecter la branche principale du référentiel distant?

126
Coocoo4Cocoa

Selon la page de manuel de git Push :

 git Push Origin experimental

Recherchez une référence qui correspond à experimental dans le référentiel source (probablement refs/heads/experimental), puis mettez à jour la même référence (par exemple, refs/heads/experimental) dans le référentiel Origin.
Si experimental n'existait pas à distance, il serait créé.

C'est pareil que:

git Push Origin experimental:refs/heads/experimental

Créez la branche experimental dans le référentiel d'origine en copiant la branche experimental actuelle.
Ce formulaire est nécessaire uniquement pour créer une nouvelle branche ou une nouvelle balise dans le référentiel distant lorsque le nom local et le nom distant sont différents; sinon, le nom de référence fonctionnera seul.

Ou, comme mentionné dans git tip , vous pouvez configurer une "Télécommande par défaut de la branche":

Vous pouvez utiliser git config pour attribuer une télécommande par défaut à une branche donnée. Cette télécommande par défaut sera utilisée pour pousser cette branche sauf indication contraire.

Ceci est déjà fait pour vous lorsque vous utilisez git clone, ce qui vous permet d’utiliser git Push sans aucun argument pour pousser la branche maître locale pour mettre à jour la branche principale du référentiel Origin.

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

peut être utilisé pour spécifier ceci manuellement.


Jan suggère (pour git> = 1.7.0 ) l'option Push -u (ou Push --set-upstream):

Pour chaque branche mise à jour ou poussée avec succès, ajoutez une référence en amont (suivi), utilisée par git-pull (sans argument) et d'autres commandes.

De cette façon, vous n'avez pas à faire de config git.

git Push -u Origin experimental
156
VonC

Si le nom de votre branche est experimental et que le nom de la télécommande est Origin, alors

git Push Origin experimental
15
John Douthat

git Push -u <remote-name> <branch-name> ne fonctionne pas si la branche nouvellement créée ne provient pas du même référentiel, c'est-à-dire si vous n'avez pas créé la nouvelle branche à l'aide de git checkout -b new_branch, cela ne fonctionnera pas.

Par exemple, j'avais cloné localement deux référentiels différents et je devais copier repo2/branch1 sur repo1 /, puis Push it aussi.

Ce lien m'a aidé à pousser ma branche locale (clonée à partir d'un autre référentiel) vers mon référentiel distant:

1
brokenfoot

Voici la page github faisant autorité pour la gestion à distance github http://github.com/guides/Push-a-branch-to-github . Cela vous aidera à répondre à toutes vos questions.

0
dylanfm

tl; dr

$ git Push --set-upstream Origin your_new_branch

plus d'informations

après avoir effectué quelques commits dans votre:

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

vous Poussez votre branche spécifiant un amont dans un des référentiels de télécommandes comme suit:

$ git Push --set-upstream REMOTE YOUR_BRANCH

télécommandes peuvent être vus par 

$ git remote -v

généralement, vous aurez une seule variable par défaut Origin. de sorte que votre commande ressemblerait à ceci:

$ git Push --set-upstream Origin your_new_branch

et toutes les poussées conséquentes peuvent être faites simplement avec git Push.

0
Ivan Prisyazhnyy