7412 votes

La caisse distant Git branch

Je suis en train de commander une branche distante:

Quelqu'un a poussé une branche appelée test avec git push origin test d'un référentiel partagé. Je peux voir la branche avec l' git branch -r. Mais comment puis-je obtenir cette branche?

  • git checkout test ne fait rien

  • git checkout origin/test fait quelque chose, mais git branch , dit - * (no branch). Je suis sur le pas de la branche?

Comment puis-je partager des branches via un dépôt public?

10086voto

hallski Points 27832

Mise à jour

Jakub réponse s'améliore sur ce point. Avec Git versions ≥ 1.6.6, il vous suffit de faire:

git fetch
git checkout test

Vieille Réponse

Avant de commencer à travailler localement sur une branche distante, vous devez aller la chercher que dans les réponses ci-dessous.

Pour récupérer une branche, il vous suffit de:

git fetch origin

Cela permettra de récupérer toutes les branches distantes pour vous. Vous pouvez voir les branches disponibles pour la caisse avec:

git branch -v -a

Avec la télécommande branches dans la main, maintenant, vous avez besoin de vérifier la branche qui vous intéresse, de vous donner une copie de travail locale:

git checkout -b test origin/test

1350voto

Jakub Narębski Points 87537

Note: moderne Git (>= 1.6.6), vous êtes en mesure d'utiliser

git checkout test

(notez qu'il est 'test' pas 'origine/test') pour effectuer magique DWIM-mery et de créer une branche locale de "test" pour vous, qui en amont serait distant de suivi de la branche d'origine et de test".


L' * (no branch) en git branch sortie signifie que vous êtes sur sans nom de la branche, dans les soi-disant "isolé" de l'état (CHEF des points directement à le commettre, et n'est pas référence symbolique à quelques de la succursale locale). Si vous avez fait quelques révisions sur ce sans nom de la branche, vous pouvez toujours créer une branche locale courant de commettre:

git checkout -b test HEAD

602voto

ndim Points 11557

Dans ce cas, vous souhaiterez probablement créer un local test de la branche qui est suivi de la télécommande test branche:

$ git branch test origin/test

Dans les versions antérieures, vous avez besoin d'un explicite --track option, mais qui est la valeur par défaut maintenant, quand vous êtes bifurquer une branche distante.

508voto

cballou Points 13804

Accepté de répondre ne fonctionne pas pour vous?

Alors que la première et la réponse sélectionnée est techniquement correct, il y a la possibilité que vous n'avez pas encore récupéré tous les objets et les références sur le dépôt distant. Si c'est le cas, vous recevrez l'erreur suivante:

$ git checkout -b remote_branch origin/remote_branch

fatal: git checkout: mise à jour des tracés incompatibles avec le passage des branches.
Avez-vous l'intention de passer à la caisse "origine/remote_branch" qui ne peut être résolu que de s'engager?

Solution

Si vous recevez ce message, vous devez tout d'abord faire un git fetch originorigin est le nom du dépôt distant avant l'exécution de l' git checkout remote_branch. Voici un exemple complet avec les réponses:

$ git fetch origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
   e6ef1e0..5029161  develop    -> origin/develop
 * [new branch]      demo       -> origin/demo
   d80f8d7..359eab0  master     -> origin/master

$ git checkout demo
Branch demo set up to track remote branch demo from origin.
Switched to a new branch 'demo'

Comme vous pouvez le voir, l'exécution git fetch origin récupéré toutes les branches distantes nous n'étions pas encore le programme d'installation à suivre sur notre machine locale. À partir de là, puisque nous avons maintenant avoir une ref pour la branche distante, il suffit de l'exécuter git checkout remote_branch et nous allons profiter des avantages d'un suivi à distance.

111voto

tcaswell Points 21489

Ce sera DWIM pour une distance n'a pas de nom d'origine (documentation):

$ git checkout -t remote_name/remote_branch

Pour ajouter une nouvelle télécommande, vous devrez le faire à la suite de la première:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

Le premier indique à Git remote existe, la seconde devient la commet.

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