Comment puis-je vérifier une branche distante de Git?

Quelqu'un a poussé une branche appelée test avec git push origin test vers un dépôt partagé. Je vois la branche avec git branch -r .

J'essaie de vérifier la branche test .

j'ai essayé:

  • git checkout test qui ne fait rien

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

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

5483
demandé sur Peter Mortensen 2009-11-23 17:23:46

24 réponses

mise à Jour

Jakub la réponse de fait améliore sur ce point. Avec les versions 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 en 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 commencer à travailler localement sur une branche distante, vous devez chercher comme dans les réponses ci-dessous.

pour aller chercher une branche, il suffit de:

git fetch origin

ceci va chercher toutes les branches éloignées pour vous. Vous pouvez voir les branches disponibles à 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
7594
répondu hallski 2017-05-23 12:10:45

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

git checkout test

(notez qu'il s'agit de 'test' et non 'origin/test') pour exécuter magical DWIM - mery et créer une branche locale 'test' pour vous, pour laquelle l'amont serait 'remote-tracking branch'origin/test'.


Le * (no branch) dans git branch la sortie signifie que vous êtes sur une branche sans nom, dans l'état de "tête détachée" (HEAD points directly to commit, et n'est pas une référence symbolique à une branche locale). Si vous avez fait quelques commits sur cette branche non nommée, vous pouvez toujours créer une branche locale à partir de la commit courante:

git checkout -b test HEAD
1108
répondu Jakub Narębski 2014-02-24 19:45:54

dans ce cas, vous voulez probablement créer une branche locale test qui suit la branche distante test :

$ git branch test origin/test

dans les versions précédentes de git , vous aviez besoin d'une option explicite --track , mais c'est la valeur par défaut maintenant lorsque vous branchez une branche distante.

487
répondu ndim 2016-02-24 09:06:49

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 est possible que vous n'ayez pas encore récupéré tous les objets et les références du dépôt à distance. Si c'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 la commutation des branches.

Aviez-vous l'intention de vérifier "origin/remote_branch" qui ne peut pas être résolu en tant que commit?

Solution

si vous recevez ce message, vous devez d'abord faire un git fetch originorigin est le nom du dépôt distant avant d'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, l'exécution de git fetch origin récupérait n'importe quelle télécommande branches nous n'étions pas encore mis en place pour suivre sur notre machine locale. De là, puisque nous avons maintenant un ref vers la branche distante, nous pouvons simplement exécuter git checkout remote_branch et nous allons gagner les avantages du suivi à distance.

407
répondu Corey Ballou 2017-05-23 12:26:35

j'ai essayé la solution ci-dessus, mais ça n'a pas marché. Essayez ça, ça marche:

git fetch origin 'remote_branch':'local_branch_name'

cela récupérera la branche distante et créera une nouvelle branche locale (si elle n'existe pas déjà) avec le nom local_branch_name et traquera la branche distante.

187
répondu Sahil kalra 2015-05-04 01:45:53

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 devez 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, le second obtient les propagations.

101
répondu tacaswell 2014-07-13 23:09:32

utiliser:

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

D'autres réponses ne fonctionnent pas avec le Git moderne dans mon cas Bénin. Vous pourriez avoir besoin de tirer en premier si la branche distante est nouvelle, mais je n'ai pas vérifié cette affaire.

91
répondu matanster 2016-06-30 16:09:02

OK , la réponse est facile... Vous voyez la branche, mais vous n'avez pas encore de copie locale!...

vous devez fetch la succursale...

vous pouvez simplement aller chercher et ensuite vérifier à la branche, utilisez la commande d'une ligne ci-dessous pour le faire:

git fetch && git checkout test

j'ai aussi créé l'image ci-dessous pour vous de partager les différences, regardez comment fetch fonctionne et aussi comment il est différent de pull :

git fetch

53
répondu Alireza 2018-08-23 13:30:02

Pour cloner un dépôt Git, n':

git clone <either ssh url /http url>

la commande ci-dessus vérifie toutes les branches, mais seule la branche master sera initialisée. Si vous voulez vérifier les autres branches, faire:

git checkout -t origin/future_branch (for example)

cette commande vérifie la branche distante, et le nom de la branche locale sera le même que celui de la branche distante.

si vous souhaitez modifier le nom de votre succursale locale lors de votre départ:

git checkout -t -b enhancement origin/future_branch

maintenant votre nom de branche local est enhancement , mais votre nom de branche distant est future_branch .

Documentation

46
répondu Madhan Ayyasamy 2014-07-13 23:11:32

Vous pouvez essayer

git fetch remote
git checkout --track -b local_branch_name origin/branch_name

ou

git fetch
git checkout -b local_branch_name origin/branch_name
29
répondu uma 2014-07-13 23:13:33

tout d'Abord, vous devez faire:

git fetch # Si vous ne savez pas à propos de la succursale nom

git fetch origin branch_name

Deuxièmement, vous pouvez vérifier la branche distante dans votre local par:

git checkout -b branch_name origin/branch_name

-b créera une nouvelle branche au nom spécifié à partir de la branche distante que vous avez sélectionnée.

27
répondu Mohideen ibn Mohammed 2017-05-21 11:18:05

commandes

git fetch --all
git checkout -b <ur_new_local_branch_name> origin/<Remote_Branch_Name>

sont égaux à

 git fetch --all

et ensuite

 git checkout -b fixes_for_dev origin/development

les deux créeront un latest fixes_for_dev de development

24
répondu sreekumar 2016-04-21 21:58:15

j'utilise la commande suivante:

git checkout --track origin/other_remote_branch
23
répondu priyankvex 2018-03-21 18:36:52

si la branche est sur autre chose que la télécommande origin j'aime faire ce qui suit:

$ git fetch
$ git checkout -b second/next upstream/next

ceci va vérifier la branche next sur la upstream à distance d'une branche locale appelée second/next . Ce qui veut dire que si vous avez déjà une branche locale nommée la suivante, elle ne sera pas en conflit.

$ git branch -a
* second/next
  remotes/origin/next
  remotes/upstream/next
22
répondu Kris 2013-05-30 05:54:57

git fetch && git checkout your-branch-name

15
répondu Inder Kumar Rathore 2014-03-26 07:00:14

git branch -r dit que le nom de l'objet n'est pas valide, parce que ce nom de branche n'est pas dans la liste des branches locales de Git. Mettez à jour votre liste de branche locale à partir de l'origine avec:

git remote update

et essayez de vérifier à nouveau votre branche distante.

ça a marché pour moi.

je crois git fetch tire tous branches distantes, ce qui n'est pas ce que l'affiche originale voulait.

14
répondu webdevguy 2014-07-13 23:12:49

aucune de ces réponses a fonctionné pour moi. cela a fonctionné:

git checkout -b feature/branch remotes/origin/feature/branch

10
répondu brianyang 2018-07-10 02:11:25

la commande git remote show <origin name> listera toutes les branches (y compris les branches non suivies). Ensuite, vous pouvez trouver le nom de la branche distante que vous devez récupérer.

exemple:

$ git remote show origin

utilisez ces étapes pour récupérer les branches distantes:

git fetch <origin name> <remote branch name>:<local branch name>
git checkout <local branch name > (local branch name should the name that you given fetching)

exemple:

$ git fetch origin test:test
$ git checkout test
9
répondu Thushan 2018-03-21 18:34:56

D'autres gars et filles donnent les solutions, mais peut-être que je peux vous dire pourquoi.

git checkout test qui ne fait rien

Does nothing n'est pas égal à doesn't work , donc je suppose que lorsque vous tapez "git checkout test" dans votre terminal et appuyez sur la touche Entrée, aucun message n'apparaît et aucune erreur ne se produit. Suis-je le droit?

Si la réponse est "oui", je peux vous dire la cause.

La cause est qu'il y a un fichier (ou dossier) nommé 'test' dans votre arborescence de travail.

quand git checkout xxx parsed,

  1. Git regarde xxx comme un nom de branche au premier abord, mais il n'est pas une branche nommée test.
  2. puis Git pense que xxx est un chemin, et heureusement (ou malheureusement), il y a un fichier nommé test. Ainsi, git checkout xxx signifie rejeter toute modification dans le fichier xxx .
  3. S'il n'y a pas de fichier nommé xxx non plus, alors Git va essayer de créer le xxx selon certaines règles. Une des règles est de créer une branche nommée xxx si remotes/origin/xxx existe.
7
répondu oldman 2018-03-21 18:39:53

vous pouvez commencer à suivre toutes les branches distantes avec le script Bash suivant:

#!/bin/bash
git fetch --all
for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`
  do git branch -f --track "$branch" "origin/$branch"
done

voici aussi une version en une seule ligne:

git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`; do git branch --track "$branch" "origin/$branch" ; done ;
6
répondu OzzyCzech 2018-03-21 18:37:49

veuillez suivre la commande pour créer un dossier vide. Entrez et utilisez cette commande:

saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url
Cloning into 'iPhoneV1'...
remote: Counting objects: 34230, done.
remote: Compressing objects: 100% (24028/24028), done.
remote: Total 34230 (delta 22212), reused 15340 (delta 9324)
Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done.
Resolving deltas: 100% (22212/22212), done.
Checking connectivity... done.
saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/
saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery
Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from origin.
Switched to a new branch '1_4_0_content_discovery'
3
répondu Mehedi Hasan 2016-06-30 16:09:52

pour obtenir des branches nouvellement créées

git fetch

pour passer dans une autre branche

git checkout BranchName
3
répondu Hasib Kamal 2018-07-07 03:59:41

aller chercher l'origine et vérifier la branche.

git fetch origin && git checkout branch_name 
2
répondu Pranav 2018-05-21 12:57:49

lancez Simplement git checkout avec le nom de la branche distante. Git va créer automatiquement une branche locale qui suit la branche distante:

git fetch
git checkout test

cependant, si ce nom de branche se trouve dans plus d'une télécommande, cela ne fonctionnera pas car Git ne sait pas quoi utiliser. Dans ce cas, vous pouvez utiliser soit:

git checkout --track origin/test

ou

git checkout -b test origin/test

Dans 2.19 , Git appris la configuration checkout.defaultRemote , qui spécifie une distance par défaut pour résoudre une telle ambiguïté.

0
répondu Eugene Yarmash 2018-09-13 12:21:19