web-dev-qa-db-fra.com

git Push to remote branch

Gens,

J'avais cloné un dépôt. J'ai créé une branche pour travailler sur une fonctionnalité en émettant la commande suivante:

git branch fix78

alors j'ai travaillé sur cette branche en

git checkout fix78

J'ai continué à m'engager dans cette branche locale. Maintenant, je voulais pousser cela vers le repo et j'ai donc émis la commande suivante:

git Push Origin master:fix78

J'ai vu le dépôt à partir d'un navigateur Web et j'ai vu qu'une nouvelle branche appelée fix78 a été créée sur le dépôt. Mais il n'y avait aucun de mes engagements que j'avais faits.

Qu'est-ce que je fais mal ici? Voici ce que j'essaie de réaliser:

Il y a un repo (master (trunk dans le jargon SVN)), maintenant quand je travaille sur une fonctionnalité, je veux en créer une branche locale et ensuite je veux aussi archiver cette branche dans le repo (pour que l'autre équipe les membres peuvent voir sur quoi je travaille), alors je veux que ma branche locale soit synchronisée avec cette branche distante que je crée.

Toute aide/rétroaction serait totalement géniale.

Merci.

48
Rubyalto

git Push Origin master:fix78 pousse le maître local vers une branche distante appelée fix78. Vous vouliez pousser la branche locale fix78, qui a la même syntaxe mais sans le master:

Vous pouvez le corriger en faisant git Push Origin :fix78 pour supprimer la branche distante puis git Push Origin fix78 pour pousser votre succursale locale vers le référentiel distant.

61
rlc

La commande Push a la forme de

git Push remote_name source_ref:destination_ref

Tout ce que vous devez faire pour corriger votre erreur est

git Push Origin +fix78:fix78

Le plus indique que vous ne vous souciez pas de la perte potentielle de l'historique de cette branche, car le push précédent était une erreur.

La syntaxe alternative est

git Push -f Origin fix78

si vous omettez la destination, cela implique que c'est le même nom. Si le suivi est configuré pour une branche particulière de la télécommande, il ira à celle-ci. La suppression de branches a 2 syntaxes, l'ancienne:

git Push -f Origin :fix78

et

git Push --delete Origin fix78

Le premier est lu comme "Ne rien pousser dans fix78" qui le supprime.

Une astuce est que si vous spécifiez . comme nom de la télécommande, cela implique le dépôt actuel comme télécommande. Ceci est utile pour mettre à jour une branche locale sans avoir à la vérifier:

git Push . Origin/master:master

mettra à jour le maître sans avoir à retirer le maître.

J'espère que cela t'aides

52
Adam Dymitruk