Question Comment puis-je vérifier une branche Git à distance?


Quelqu'un a poussé une branche appelée test avec git push origin test dans un référentiel partagé. Je peux voir la branche avec git branch -r.

Maintenant, j'essaie de vérifier la télécommande test branche.

J'ai essayé:

  • git checkout test qui ne fait rien

  • git checkout origin/test donne * (no branch). Ce qui est confus. Comment puis-je être sur "pas de branche"?

Comment puis-je vérifier une branche Git à distance?


5300
2017-11-23 14:23


origine


Réponses:


Mettre à jour

La réponse de Jakub améliore réellement à ce sujet. Avec les versions de Git ≥ 1.6.6, vous pouvez simplement faire:

git fetch
git checkout test

(L'utilisateur masukomi souligne ci-dessous que git checkout test ne fonctionnera pas dans git moderne si vous avez plusieurs télécommandes. Dans ce cas, utilisez git checkout -b test <name of remote>/test).

Vieille réponse

Avant de pouvoir commencer à travailler localement sur une branche distante, vous devez l'extraire comme indiqué dans les réponses ci-dessous.

Pour aller chercher une branche, il vous suffit de:

git fetch origin

Cela va chercher toutes les branches distantes pour vous. Vous pouvez voir les branches disponibles pour la caisse avec:

git branch -v -a

Avec les branches distantes en main, vous devez maintenant vérifier la branche qui vous intéresse, vous donnant une copie de travail locale:

git checkout -b test origin/test

7346
2017-11-23 14:26



Sidenote: Avec Git moderne (> = 1.6.6), vous pouvez utiliser juste

git checkout test

(notez que c'est «test» et non «origine / test») pour effectuer des actions magiques DWIM-mery et créez un 'test' de branche locale pour vous, pour lequel amont serait une branche de suivi à distance 'origin / test'.


le * (no branch) dans git branch la sortie signifie que vous êtes sur une branche sans nom, dans un état appelé "HEAD détaché" (HEAD pointe directement vers la validation, et n'est pas une référence symbolique à une branche locale). Si vous avez effectué des validations sur cette branche sans nom, vous pouvez toujours créer une branche locale à partir de la validation en cours:

git checkout -b test HEAD

1088
2017-11-24 00:17



Dans ce cas, vous voulez probablement créer un local test branche qui suit la télécommande test branche:

$ git branch test origin/test

Dans les versions antérieures de git, vous aviez besoin d'un explicite --track option, mais c'est la valeur par défaut lorsque vous branchez une branche distante.


475
2017-11-23 14:27



Réponse acceptée ne travaille pas pour vous?

Alors que la première et la réponse sélectionnée est techniquement correct, il est possible que vous n'ayez pas encore récupéré tous les objets et références du référentiel distant. Si tel est le cas, vous recevrez l'erreur suivante:

$ git checkout -b remote_branch origin/remote_branch

fatal: git checkout: la mise à jour des chemins est incompatible avec le changement de branche.
  Aviez-vous l'intention de vérifier 'origin / remote_branch' qui ne peut pas être résolu en commit?

Solution

Si vous recevez ce message, vous devez d'abord faire un git fetch origin où origin est le nom du référentiel distant avant de s'exécuter git checkout remote_branch. Voici un exemple complet avec des 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, courir git fetch origin récupéré toutes les branches distantes que nous n'avions pas encore configuré pour suivre sur notre machine locale. De là, puisque nous avons maintenant un ref à la branche distante, nous pouvons simplement courir git checkout remote_branch et nous allons bénéficier des avantages du suivi à distance.


390
2017-12-07 20:52



J'ai essayé la solution ci-dessus, mais cela n'a pas fonctionné. Essayez ceci, cela fonctionne:

git fetch origin 'remote_branch':'local_branch_name'

Cela va chercher la branche distante et créer une nouvelle branche locale (si elle n'existe pas déjà) avec le nom local_branch_nameet suivre la télécommande à l'intérieur.


175
2017-10-18 05:55



Cette volonté DWIM pour une origine non nommée à distance (Documentation):

$ git checkout -t remote_name/remote_branch

Pour ajouter une nouvelle télécommande, vous devez d'abord faire ce qui suit:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

Le premier dit à Git que la télécommande existe, la seconde obtient les commits.


100
2018-04-27 22:37



Utilisation:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

D'autres réponses ne fonctionnent pas avec Git moderne dans mon cas bénin. Vous devrez peut-être tirer en premier si la branche distante est nouvelle, mais je n'ai pas vérifié ce cas.


89
2018-02-21 10:58