2010-01-06 9 views
8

Dans la section Tirer en amont change sur help.github's Forking a project il déclare:Pourquoi inclure `master` dans la commande` git fetch upstream master`?

temps a passé, la prise en pension en amont a changé et que vous souhaitez mettre à jour votre fourchette avant de soumettre un nouveau patch. Il y a deux façons de le faire:

$ git fetch upstream master 

$ git merge upstream/master 

Pourquoi sont-ils dans la master y compris commande d'extraction? J'ai regardé l'information git help fetch mais je ne comprends pas ce qui inclut master. Merci.

Répondre

6

Cela vous permet de:

  • mettre à jour votre version locale du maître branche amont uniquement (par opposition que la mise à jour toutes branches du repo en amont, ce qui peut être plus à faire)
  • pas déclencher une fusion tout de suite (par opposition à la commande de traction)

le git merge tentera alors de fusionner cette version locale de l'amont maître à votre branche maître repo.

Donc ici, maître est, pour la commande fetch, une référence.

<refspec> 

Le format d'un paramètre <refspec> est un avantage en option +, suivie par l'arbitre source <src>, suivi par deux points:, suivie par l'arbitre de destination <dst>.

L'arbitre à distance qui correspond <src> est tiré par les cheveux, et si <dst> n'est pas une chaîne vide, l'arbitre local qui correspond il est une avance rapide en utilisant <src>.
Si l'option plus + est utilisée, l'adresse locale est mise à jour même si elle n'aboutit pas à une mise à jour de l'avance rapide.

Ici, <dst> est vide, donc la branche locale correspondante (votre maître) est mise à jour.


Sans maître, cela donnerait:

git fetch upstream 

Les copies de commande ci-dessus toutes les branches de l'espace de noms refs/heads/ à distance et les stocke à l'espace de noms refs/remotes/upstream/ local, sauf si l'option branch.<name>.fetch est utilisée pour spécifiez un refspec non défini par défaut.