Comment vérifier une branche git distante?

Quelqu'un a cliqué sur une branche nommée test avec le test d' git push origin test dans un référentiel commun. Je vois une branche avec git branch -r .

J'essaie maintenant de tester le test de branche distante.

J'ai essayé:

  • git checkout test qui ne fait rien

  • git checkout origin/test donne * (no branch) . C'est déroutant. Comment puis-je être sur "pas de branche"?

Comment vérifier une branche git distante?

5758
23 нояб. fixé par Juri Glass le 23 novembre 2009-11-23 17:23 '09 à 17:23 2009-11-23 17:23
@ 26 réponses

Rafraîchir

La réponse de Yakub améliore réellement cela. Avec les versions Git ≥ 1.6.6 avec une seule télécommande, vous pouvez simplement:

 git fetch git checkout test 

Comme le note l'utilisateur masukomi dans le commentaire, le git checkout test Git Checkout NE fonctionnera PAS dans Git moderne si vous avez plusieurs consoles. Dans ce cas, utilisez

 git checkout -b test <name of remote>/test 

ou sténographie

 git checkout -t <name of remote>/test 

Ancienne réponse

Avant de pouvoir commencer le travail local avec une branche distante, vous devez l'obtenir, comme indiqué dans les réponses ci-dessous.

Pour créer une succursale, il vous suffit de:

 git fetch origin 

Cela vous apportera toutes les branches distantes. Vous pouvez voir les branches disponibles pour la commande avec:

 git branch -v -a 

Maintenant que vous avez des branches distantes, vous devez vérifier la branche qui vous intéresse en vous fournissant une copie de travail locale:

 git checkout -b test origin/test 
7947
23 нояб. La réponse est donnée hallski le 23 novembre. 2009-11-23 17:26 '09 à 17h26 2009-11-23 17:26

Note: Avec Git moderne (> = 1.6.6 ), vous ne pouvez utiliser que

 git checkout test 

(notez qu'il s'agit de 'test' et non de 'origine / test') pour exécuter la magie DWIM magique et créer pour vous une branche 'test' pour laquelle l'amont constituerait la trace distante de 'origine / test'.

border=0

La sortie * (no branch) dans git branch signifie que vous êtes dans une branche non nommée dans l'état dit "HEAD déconnecté" (HEAD fait directement référence à la validation et n'est pas un lien symbolique vers une branche locale). Si vous avez effectué des commits dans cette branche sans nom, vous pouvez toujours créer une branche locale avec le commit en cours:

 git checkout -b test HEAD 
1147
24 нояб. Réponse donnée par Jakub Narębski le 24 nov. 2009-11-24 03:17 '09 à 3:17 2009-11-24 03:17

Dans ce cas, vous souhaiterez probablement créer une branche de test locale qui suit la branche de test distante:

 $ git branch test origin/test 

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

508
23 нояб. la réponse est donnée le 23 novembre ndim 2009-11-23 17:27 '09 à 17:27 2009-11-23 17:27

La réponse acceptée ne fonctionne pas pour vous?

Bien que la première réponse sélectionnée soit techniquement correcte, il est possible que vous n'ayez pas encore reçu tous les objets et liens du référentiel distant. Si tel est le cas, vous obtiendrez l'erreur suivante:

 $ git checkout -b remote_branch origin/remote_branch 

fatal: git checkout: les chemins de mise à jour sont incompatibles avec le changement de branche.
Aviez-vous l'intention de vérifier "origin / remote_branch", qui ne peut pas être résolu en tant que commit?

La solution

Si vous recevez ce message, vous devez d'abord créer git fetch origin , où origin est le nom du référentiel distant avant d'exécuter 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 constater, lorsque nous git fetch origin des branches distantes extraites, nous n’avons pas encore configuré le suivi sur notre machine locale. À partir de là, puisque nous avons maintenant un lien vers une branche distante, nous pouvons simplement exécuter git checkout remote_branch , et nous aurons les avantages du suivi à distance.

421
07 дек. Réponse donnée par Corey Ballou 07 déc. 2012-12-07 23:52 '12 à 23h52 2012-12-07 23:52

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

 git fetch origin 'remote_branch':'local_branch_name' 

Cela mènera à la branche distante et créera une nouvelle branche locale (si elle n'existe pas déjà) avec le nom local_branch_name et en local_branch_name suivi.

208
18 окт. réponse donnée par Sahil kalra 18 oct. 2013-10-18 08:55 '13 à 8:55 2013-10-18 08:55

Ce sera le DWIM pour le nom distant non nommé ( documentation ):

 $ git checkout -t remote_name/remote_branch 

Pour ajouter une nouvelle télécommande, vous devez procéder comme suit:

 $ git remote add remote_name location_of_remote $ git fetch remote_name 

Le premier indique l'accès distant à Git, le second reçoit des commits.

104
28 апр. répondit tacaswell le 28 avril 2012-04-28 01:37 '12 à 1:37 2012-04-28 01:37

Utiliser:

 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 d'abord migrer si la branche distante est nouvelle, mais je n'ai pas vérifié ce cas.

98
21 февр. La réponse est donnée par matanster le 21 février. 2016-02-21 13:58 '16 à 13h58 2016-02-21 13h58

Eh bien , la réponse est simple ... Vous voyez essentiellement une branche, mais vous n’avez pas encore de copie locale! ...

Vous devez fetch branche ...

Vous pouvez simplement recevoir et ensuite passer une commande dans une branche en utilisant la commande à une ligne ci-dessous pour ce faire:

 git fetch  git checkout test 

J'ai également créé une image ci-dessous afin que vous puissiez partager vos différences, voir comment fonctionne l' fetch et comment la pull :

2019

05 сент. La réponse est donnée à Alireza le 05 septembre. 2017-09-05 17:20 17 à 17h20 2017-09-05 17:20

Pour cloner le référentiel Git, exécutez:

 git clone <either ssh url /http url> 

La commande ci-dessus vérifie toutes les branches, mais seule la branche principale sera initialisée. Si vous souhaitez vérifier d'autres branches, procédez comme suit:

 git checkout -t origin/future_branch (for example) 

Cette commande vérifie la branche distante et le nom de votre branche locale est identique à celui de la branche distante.

Si vous souhaitez remplacer le nom de la succursale locale à la caisse:

 git checkout -t -b enhancement origin/future_branch 

Le nom de votre branche locale est future_branch , mais celui de votre branche distante est future_branch .

La documentation

48
21 янв. la réponse est donnée à Madhan Ayyasamy le 21 janvier 2013-01-21 13:04 13 à 13:04 2013-01-21 13:04

Tu peux 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 
31
24 марта '14 в 16:11 2014-03-24 16:11 la réponse est donnée le 24 mars 2014 à 16:11 2014-03-24 16:11

Tout d'abord, vous devez faire:

git fetch # Si vous ne connaissez pas le nom de la branche

 git fetch origin branch_name 

Deuxièmement, vous pouvez vérifier la branche distante de votre section locale:

 git checkout -b branch_name origin/branch_name 

-b créera une nouvelle branche dans le nom spécifié à partir de la branche distante sélectionnée.

27
18 мая '17 в 16:55 2017-05-18 16:55 La réponse est donnée par Mohideen ibn Mohammed le 18 mai '17 à 16:55 2017-05-18 16:55

Les équipes

 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 

Tous deux créeront les latest fixes_for_dev du development

25
21 апр. la réponse est donnée par sreekumar le 21 avril 2016-04-21 22:10 '16 à 22h10 2016-04-21 22:10

J'utilise la commande suivante:

 git checkout --track origin/other_remote_branch 
23
06 сент. la réponse est donnée priyankvex 06 sep . 2017-09-06 17:41 '17 à 17h41 2017-09-06 17:41

Si la branche se trouve sur autre chose que l' origin distante, j'aime bien procéder comme suit:

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

Cela vérifiera la next branche sur le serveur en upstream distant de la branche locale nommée second/next . Cela signifie que si vous avez déjà une branche locale nommée next, elle ne sera pas en conflit.

 $ git branch -a * second/next remotes/origin/next remotes/upstream/next 
22
01 марта '13 в 13:00 2013-03-01 13:00 La réponse est donnée par Kris le 01 mars 13 à 13:00 2013-03-01 13:00

git fetch git checkout your-branch-name

15
26 марта '14 в 10:00 2014-03-26 10:00 La réponse est donnée à Inder Kumar Rathore le 26 mars 2014 à 10h00. 2014-03-26 10:00

git branch -r dit que le nom de l'objet n'est pas valide car le nom de cette branche ne figure pas dans la liste des branches Git locales. Mettez à jour votre liste de branches locales à partir de la source avec:

 git remote update 

Et essayez à nouveau de vérifier la branche distante.

Cela a fonctionné pour moi.

Je pense que git fetch attire toutes les branches distantes, ce que l’affiche originale ne veut pas.

15
06 июня '13 в 15:21 2013-06-06 15:21 La réponse est donnée par webdevguy le 06 juin 13 à 15:21 2013-06-06 15:21

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

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

14
10 июля '18 в 5:11 2018-07-10 05:11 La réponse est donnée par brianyang le 10 juillet '18 à 5:11 am 2018-07-10 05:11

La commande git remote show <origin name> affiche une liste de toutes les branches (y compris les branches non suivies). Ensuite, vous pouvez trouver le nom de la branche distante que vous souhaitez extraire.

Exemple:

 $ git remote show origin 

Utilisez ces étapes pour extraire 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 
11
07 янв. La réponse est donnée par Thushan le 07 janvier 2018-01-07 16:12 '18 à 16h12 2018-01-07 16:12

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

test git check qui ne fait rien

Does nothing ne veut pas dire que doesn't work , alors je suppose que lorsque vous entrez 'test git checkout' dans votre terminal et que vous appuyez sur la touche Entrée, le message ne s'affiche pas et aucune erreur ne se produit. Ai-je raison

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

La raison en est qu’il existe dans votre arborescence un fichier (ou dossier) nommé "test".

Quand git checkout xxx a découvert,

  • git commence par regarder xxx comme nom d'une branche, mais il n'y a pas de branche nommée test.
  • Ensuite, Git pense que xxx est la solution, et heureusement (ou, malheureusement), il existe un fichier appelé test. Par conséquent, git checkout xxx signifie annuler toute modification dans le fichier xxx .
  • S'il n'y a pas de fichier portant le nom xxx , alors Git essaiera de créer xxx conformément à certaines règles. Une règle consiste à créer une branche avec le nom xxx , si remotes/origin/xxx existe.
8
10 июля '17 в 10:45 2017-07-10 10:45 la réponse est donnée à oldman le 10 juillet 2017 à 10:45 2017-07-10 10:45

J'étais coincé dans une situation où l' error: pathspec 'desired-branch' did not match any file(s) known to git. pour toutes les offres ci-dessus. Je suis sur la version 1.8.3.1 de Git.

Donc cela a fonctionné pour moi :

 git fetch origin desired-branch git checkout -b desired-branch FETCH_HEAD 

L'explication de ceci est que j'ai remarqué que lors de la récupération d'une branche distante, celle-ci était sélectionnée dans FETCH_HEAD:

 $ git fetch origin desired-branch From github.com:MYTEAM/my-repo * branch desired-branch -> FETCH_HEAD 
7
11 окт. répondre alisa 11 octobre 2018-10-11 00:52 '18 à 0:52 2018-10-11 00:52

Il suffit d’exécuter git checkout avec le nom de la branche distante. Git créera automatiquement une branche locale qui gardera la trace de la télécommande:

 git fetch git checkout test 

Cependant, si ce nom de branche est trouvé dans plus d'une console, 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 

En 2.19, Git a examiné la configuration de checkout.defaultRemote , dans laquelle, lors de la suppression de cette ambiguïté, la valeur de contrôle à distance par défaut est indiquée.

6
13 сент. la réponse est donnée par Eugene Yarmash le 13 sep . 2018-09-13 15:21 '18 à 15h21 2018-09-13 15:21

Pour obtenir des branches nouvellement créées

 git fetch 

Passer à une autre branche

 git checkout BranchName 
6
15 марта '18 в 11:49 2018-03-15 11:49 la réponse est donnée par Hasib Kamal le 15 mars 18 à 11:49 2018-03-15 11:49

Vous pouvez commencer à suivre toutes les branches supprimées 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 également la version monoligne:

 git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`; do git branch --track "$branch" "origin/$branch" ; done ; 
6
11 авг. La réponse est donnée par OzzyCzech le 11 août. 2017-08-11 15:06 '17 à 15:06 2017-08-11 15:06

Suivez cette commande pour créer un dossier vide. Entrez-le et utilisez la commande suivante:

 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' 
2
01 янв. la réponse est donnée par Mehedi Hasan Jan 01 2016-01-01 13:31 '16 à 13:31 2016-01-01 13:31

Obtenez l'origine et vérifiez la branche.

 git fetch origin  git checkout branch_name 
1
21 мая '18 в 14:33 2018-05-21 14:33 la réponse est donnée à Pranav le 21 mai '18 à 14:33 2018-05-21 14:33

Si le nom de la branche distante commence par des caractères spéciaux, vous devez utiliser des guillemets simples dans la commande de paiement, sinon git ne saura pas de quelle branche vous parlez.

Par exemple, j'ai essayé d'extraire une branche distante nommée #9773 mais la commande n'a pas fonctionné correctement, comme illustré dans la figure ci-dessous:

2019

07 нояб. la réponse est donnée à Ulysses Alves 07 nov. 2018-11-07 14:17 '18 à 14h17 2018-11-07 14:17

Autres questions sur tags ou Poser une question