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
.
J'essaie maintenant de vérifier la branche distante test
.
J'ai essayé:
git checkout test
qui ne fait rien
git checkout Origin/test
donne * (no branch)
. Ce qui est déroutant. Comment puis-je être sur "pas de branche"?
Comment puis-je extraire une branche Git distante?
réponse de Jakub améliore réellement cela. Avec les versions Git ≥ 1.6.6, avec une seule télécommande, vous pouvez simplement faire:
git fetch
git checkout test
Comme l'utilisateur masukomi le fait remarquer dans un commentaire, 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
ou la sténographie
git checkout -t <name of remote>/test
Avant de pouvoir travailler localement sur une branche distante, vous devez le récupérer comme indiqué dans les réponses ci-dessous.
Pour récupérer une branche, il vous suffit de:
git fetch Origin
Cela va chercher toutes les branches distantes 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, en vous donnant une copie de travail locale:
git checkout -b test Origin/test
Note: avec Git moderne (> = 1.6.6 ), vous pouvez utiliser juste
git checkout test
(notez qu'il est 'test' et non pas 'Origine/test') d'effectuer une opération magique DWIM - mery et de créer une branche locale 'test', pour laquelle le amont serait une branche de suivi à distance ' Origine/test '.
La sortie * (no branch)
dans git branch
signifie que vous êtes sur une branche non nommée, dans l'état dit "détaché HEAD" (HEAD pointe directement à valider et n'est pas une référence symbolique à une branche locale). Si vous avez effectué des commits sur cette branche sans nom, vous pouvez toujours créer une branche locale à partir de la validation en cours:
git checkout -b test HEAD
Dans ce cas, vous souhaiterez probablement créer une branche locale test
qui suit la branche distante test
:
$ git branch test Origin/test
Dans les versions antérieures de git
, vous aviez besoin d'une option explicite --track
, mais il s'agit de l'option par défaut lorsque vous passez d'une branche distante à une branche.
Bien que la première réponse sélectionnée soit techniquement correcte , 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 le message d'erreur suivant:
$ git checkout -b remote_branch Origin/remote_branch
fatal: git checkout: la mise à jour des chemins est incompatible avec le changement de branche.
Avez-vous l’intention de extraire "Origin/remote_branch" qui ne peut pas être résolu en tant que commit?
Si vous recevez ce message, vous devez d'abord effectuer un git fetch Origin
où Origin
est le nom du référentiel distant avant l'exécution de 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 constater, l'exécution de git fetch Origin
a permis d'extraire toutes les branches distantes que nous n'avions pas encore configurées pour effectuer le suivi sur notre ordinateur local. À partir de là, puisque nous avons maintenant une référence à la branche distante, nous pouvons simplement exécuter git checkout remote_branch
et nous allons bénéficier des avantages du suivi à distance.
J'ai essayé la solution ci-dessus, mais cela n'a pas fonctionné. Essayez ceci, ça marche:
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_name
et en suivre la distante.
Ce sera DWIM pour une télécommande non nommée Origin ( documentation ):
$ git checkout -t remote_name/remote_branch
Pour ajouter une nouvelle télécommande, vous devez d’abord procéder comme suit:
$ git remote add remote_name location_of_remote
$ git fetch remote_name
Le premier indique à Git que la télécommande existe, le second obtient les commits.
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 extraire d'abord si la branche distante est nouvelle, mais je n'ai pas vérifié cette affaire.
OK, la réponse est simple ... Vous voyez en gros la branche, mais vous n'avez pas encore de copie locale! ...
Vous devez fetch
la branche ...
Vous pouvez simplement aller chercher puis passer à la branche, utilisez la commande d'une ligne ci-dessous pour le faire:
git fetch && git checkout test
J'ai également créé l'image ci-dessous pour que vous puissiez partager les différences, voir comment fonctionne fetch
et aussi en quoi il diffère de pull
:
Pour cloner un référentiel Git, procédez comme suit:
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 souhaitez utiliser les autres branches, procédez comme suit:
git checkout -t Origin/future_branch (for example)
Cette commande extrait la branche distante et le nom de votre branche locale sera identique à celui de la branche distante.
Si vous souhaitez remplacer le nom de votre succursale locale à la caisse:
git checkout -t -b enhancement Origin/future_branch
Maintenant, le nom de votre branche locale est enhancement
, mais celui de votre branche distante est future_branch
.
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
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 une succursale distante dans votre section locale en:
git checkout -b branch_name Origin/branch_name
-b
créera une nouvelle branche avec le nom spécifié à partir de la branche distante sélectionnée.
Les commandes
git fetch --all
git checkout -b <ur_new_local_branch_name> Origin/<Remote_Branch_Name>
sont égaux à
git fetch --all
puis
git checkout -b fixes_for_dev Origin/development
Les deux créeront un latest fixes_for_dev
à partir de development
J'utilise la commande suivante:
git checkout --track Origin/other_remote_branch
Si la branche se trouve sur autre chose que la télécommande Origin
, j'aime bien procéder comme suit:
$ git fetch
$ git checkout -b second/next upstream/next
Cela permettra de vérifier la branche next
de la télécommande upstream
dans une branche locale appelée second/next
. Ce qui 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
aucune de ces réponses n'a fonctionné pour moi. cela a fonctionné:
git checkout -b feature/branch remotes/Origin/feature/branch
git branch -r
indique que le nom de l'objet n'est pas valide, car ce nom de branche ne figure pas dans la liste des branches locales de Git. Mettez à jour votre liste de branches locales depuis Origin avec:
git remote update
Et essayez à nouveau de vérifier votre branche distante.
Cela a fonctionné pour moi.
Je crois que git fetch
attire tous branches distantes, ce qui n'est pas ce que l'affiche originale voulait.
git fetch && git checkout your-branch-name
J'étais coincé dans une situation en voyant error: pathspec 'desired-branch' did not match any file(s) known to git.
pour toutes les suggestions ci-dessus. Je suis sur la version 1.8.3.1 de Git.
Donc ceci a fonctionné pour moi:
git fetch Origin desired-branch
git checkout -b desired-branch FETCH_HEAD
L'explication derrière est que j'ai remarqué que lors de l'extraction de la branche distante, celle-ci était extraite dans FETCH_HEAD:
$ git fetch Origin desired-branch
From github.com:MYTEAM/my-repo
* branch desired-branch -> FETCH_HEAD
Exécutez simplement _git checkout
_ avec le nom de la branche distante. Git va créer automatiquement une branche locale qui suit celle qui est distante:
_git fetch
git checkout test
_
Cependant, si ce nom de branche se trouve dans plusieurs télécommandes distantes, cela ne fonctionnera pas car Git ne sait pas lequel utiliser. Dans ce cas, vous pouvez utiliser soit:
_git checkout --track Origin/test
_
ou
_git checkout -b test Origin/test
_
Dans 2.19 , Git a appris la configuration checkout.defaultRemote
, qui spécifie une télécommande avec la valeur par défaut à la résolution d'une telle ambiguïté.
La commande git remote show <Origin name>
répertorie 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
Suivez ces étapes pour récupérer des 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
D'autres gars et filles donnent les solutions, mais je peux peut-être vous dire pourquoi.
test git checkout 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 que vous appuyez sur la touche Entrée, aucun message ne s'affiche et aucune erreur ne se produit. Ai-je raison?
Si la réponse est "oui", je peux vous en dire la cause.
La cause en est qu'il existe un fichier (ou dossier) nommé 'test' dans votre arbre de travail.
Lorsque git checkout xxx
analysé,
xxx
comme un nom de branche, mais il n'y a pas de branche nommée test.xxx
est un chemin, et heureusement (ou malheureusement), il existe un fichier nommé test. Donc, git checkout xxx
signifie ignorer toute modification dans le fichier xxx
.xxx
, alors Git essaiera de créer le xxx
conformément à certaines règles. Une des règles est de créer une branche nommée xxx
si remotes/Origin/xxx
existe.Pour obtenir les branches nouvellement créées
git fetch
Pour changer de branche
git checkout BranchName
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 également une 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 ;
Récupérer de la télécommande et extraire la branche.
git fetch <remote_name> && git checkout <branch_name>
Par exemple.:
fonction git fetch Origin && Git Checkout/XYZ-1234-Ajouter-alertes
Utilisez fetch
pour tirer toute votre télécommande
git fetch --all
Pour lister les branches distantes:
git branch -r
Pour lister toutes vos branches
git branch -l
>>outpots like-
* develop
test
master
Passer à la caisse/changer de succursale
git checkout master
Si le nom de la branche distante commence par des caractères spéciaux, vous devez utiliser des guillemets simples autour de lui dans la commande d'extraction, 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 l'image ci-dessous:
Pour une raison quelconque, je me suis demandé si le symbole pointu (#) pouvait avoir quelque chose à voir avec cela, puis j'ai essayé d'entourer le nom de la branche de guillemets simples, comme '#9773'
plutôt que #9773
, et cela a fonctionné. bien.
$ git checkout -b '#9773' Origin/'#9773'
Suivez la commande pour créer un dossier vide. Entrez cela 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'