3131 votes

Git fetch branche à distance

Mon collègue et moi-même travaillons sur le même référentiel que nous avons ramifié en deux branches de chaque technique pour différents projets, mais ils ont des similitudes, nous allons donc parfois envie de s'engager retour à l' *maître de la branche.

Cependant, j'ai de la direction générale, comment mon collègue peut-il tirer de cette branche en particulier. Un git clone de l'opération ne semble pas créer les branches localement pour lui, si je peux le voir en live sur unfuddle après une poussée ma fin.

Toute aide serait grandement appréciée.

*Modifier, aussi, quand j'ai à l'origine de la branche que j'ai fait-b de la caisse. Vous ne savez pas si cela fait une grande différence?

*Edit 2

iMac:test_solar dave$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master

git fetch origin discover
git checkout discover

Ce sont les commandes que j'ai couru. Mais certainement pas de workey. Je veux être en mesure de vérifier que la branche et ensuite de pousser et de s'engager en arrière juste que les branches de différents collaborateurs ou les postes de travail.

4239voto

ralphtheninja Points 24346

Vous avez besoin de créer une branche locale, qui suit une branche distante. La commande suivante va créer une branche locale nommée daves_branch, le suivi de la distance de la branche origin/daves_branch. Lorsque vous poussez vos changements de succursale à distance seront mis à jour.

git checkout --track origin/daves_branch

1294voto

Mark Mikofski Points 2503

Je l'ai utilisé, fetch suivie par checkout ...

git fetch <remote> <rbranch>:<lbranch> 
git checkout <lbranch>

... où est - <rbranch> est la distance de la succursale ou de la source de ref et <lbranch> est encore inexistante local de la succursale ou de destination ref vous souhaitez suivre et que vous souhaitez probablement le nom de la même que la distance de la branche ou de la source réf. C'est expliqué à la rubrique options dans l'explication de l' <refspec>.

Git est si intelligent auto complète la première commande si je l'onglet après les premières lettres de la branche distante. C'est à dire: je n'ai même pas le nom de la branche locale, Git copie automatiquement le nom de la branche distante pour moi. Merci Git!

Je crois que certains de la documentation pour l' fetch peut avoir été copié textuellement pull. En particulier, la section sur l' <refspec> dans les options est la même. Cependant, je ne crois pas qu' fetch sera jamais merge, de sorte que si vous laissez la destination du côlon vide fetch n'ont rien à faire.

REMARQUE: git fetch <remote> <refspec> "est l'abréviation de git fetch <remote> <refspec>: qui serait donc de ne rien faire, mais git fetch <remote> <tag> est le même que git fetch <remote> <tag>:<tag> qui devrait copie de la télécommande <tag> localement.

Je suppose que ce n'est utile que si vous souhaitez copier une branche distante localement, mais pas nécessairement le vérifier tout de suite. Sinon, maintenant, je voudrais utiliser la accepté la réponse ci-dessus, qui est expliqué en détail dans la première section de la caisse de la description et, plus tard, dans les options de la section en vertu de l'explication de l' --track, puisque c'est un 1-liner.

Pour info: l'ordre de L' <refspecs> (source:destination) explique l'étrange pré Git-1.7 méthode pour supprimer les branches distantes. C'est à dire: Push rien dans la destination refspec.

498voto

paneer_tikka Points 885

Si vous essayez de "checkout" une nouvelle branche à distance (qui existe uniquement sur la télécommande, mais pas localement), voici ce que vous aurez besoin de:

git fetch origin

git checkout --piste origine/<remote_branch_name>

Cela suppose que vous souhaitez récupérer à partir de l'origine. Si pas le cas, remplacez l'origine par votre télécommande nom.

168voto

David Points 188

À la caisse myBranch qui existe à distance et non pas localement Cela a fonctionné pour moi:

git fetch --all
git checkout myBranch

J'ai eu ce message:

Branch myBranch set up to track remote branch myBranch from origin
Switched to a new branch 'myBranch'

54voto

guillaumevincent Points 633

Le titre et la question sont confus:

  • Git fetch branche à distance
  • comment mon collègue peut-il tirer de cette branche en particulier.

Si la question est de savoir comment puis-je obtenir une succursale à distance pour travailler avec ou comment git checkout une branche distante, une solution plus simple est:

Avec git (>= 1.6.6), vous pourrez utiliser:

git checkout <branch_name>

Si l' <branch_name> n'est pas trouvé, mais il n'existe pas de suivi de la branche dans exactement une télécommande avec un nom correspondant, traiter comme équivalent à:

git checkout -b <branch_name> --track <remote>/<branch_name>

voir la documentation de git checkout

Pour votre ami:

$ git checkout discover
Branch discover set up to track remote branch discover
Switched to a new branch 'discover'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X