Quelqu'un a poussé une branche appelée test
avec git push origin test
vers un référentiel partagé. Je peux voir la branche avec git branch -r
.
Maintenant, j'essaie de vérifier la test
branche distante .
J'ai essayé:
git checkout test
qui ne fait riengit checkout origin/test
donne* (no branch)
. Ce qui est déroutant. Comment puis-je être sur "pas de succursale"?
Comment puis-je vérifier une branche Git distante?
git
git-checkout
remote-branch
Verre Juri
la source
la source
upstream
, et pas seulementorigin
, et chaque réponse recommandée ne fait rien d'utile à distance (destiné à un jeu de mots). EDIT - excusez-moi, la multitude de suggestions contenues dans les 2 premières réponses étaient inutiles; Le troisième (git branch test origin/test
) est ce qui fonctionne. Heureux que les 2 premiers aient 20 fois plus de votes ...Réponses:
Mise à jour
La réponse de Jakub s'améliore en fait. Avec les versions Git ≥ 1.6.6, avec une seule télécommande, vous pouvez simplement faire:
Comme le souligne l'utilisateur masukomi dans un commentaire,
git checkout test
ne fonctionnera PAS dans git moderne si vous avez plusieurs télécommandes. Dans ce cas, utilisezou la sténographie
Ancienne réponse
Avant de pouvoir commencer à 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:
Cela récupérera toutes les branches distantes pour vous. Vous pouvez voir les succursales disponibles pour le paiement avec:
Avec les succursales distantes en main, vous devez maintenant vérifier la succursale qui vous intéresse, en vous donnant une copie de travail locale:
la source
git fetch
avant de le faire pour que git soit au courantorigin/test
git fetch origin test
origin/test
qui ne peut pas être résolu comme commit?"git checkout test
ne fonctionnera PAS dans git moderne si vous avez plusieurs télécommandes qui ont le même nom de branche . Il ne sait pas lequel utiliser.Sidenote: Avec Git moderne (> = 1.6.6 ), vous pouvez utiliser simplement
(notez qu'il s'agit de «test» et non d '«origine / test») pour effectuer un DWIM magique et créer un «test» de branche locale pour vous, pour lequel en amont serait la branche de suivi à distance «origine / test».
La sortie
* (no branch)
ingit branch
signifie que vous êtes sur une branche sans nom, dans ce que l'on appelle l'état "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 actuelle:** EDIT (par l'éditeur et non par l' auteur) **
J'ai trouvé un commentaire enfoui ci-dessous qui semble moderniser cette réponse:
accent sur
git checkout origin/test
la source
error: pathspec 'branch_name' did not match any file(s) known to git.
là, vous devez d'abord faire une recherche git.Dans ce cas, vous souhaiterez probablement créer une
test
branche locale qui suit latest
branche distante :Dans les versions antérieures de
git
, vous aviez besoin d'une--track
option explicite , mais c'est la valeur par défaut maintenant lorsque vous dérivez une branche distante.la source
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 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:
Solution
Si vous recevez ce message, vous devez d'abord faire
git fetch origin
oùorigin
est le nom du référentiel distant avant de l'exécutergit checkout remote_branch
. Voici un exemple complet avec des réponses:Comme vous pouvez le voir, l'exécution a
git fetch origin
récupéré toutes les branches distantes que nous n'étions pas encore configurées pour suivre sur notre machine locale. À partir de là, puisque nous avons maintenant une référence à la branche distante, nous pouvons simplement exécutergit checkout remote_branch
et nous bénéficierons des avantages du suivi à distance.la source
git checkout -b newbranch
fonctionne également très bien pour créer et extraire en une seule étape une nouvelle branche basée sur la branche actuelle.git ls-remote
et la seule façon d'en utiliser une estgit checkout -b [branch] --track [remote/branch]
... et c'est après avoirgit pull [remote] [branch]
travaillé. C'est-à-dire, il a en fait tiré toute la branche, mais ne l'a pas répertorié.git fetch other_remote only_branch
, vous obtenez toujours l'fatal
erreur. Vous devezgit fetch other_remote
sans le nom de la branche. Conception étrange.J'ai essayé la solution ci-dessus, mais cela n'a pas fonctionné. Essayez ceci, cela fonctionne:
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 suivre celle distante.la source
Ce sera DWIM pour une origine distante non nommée ( documentation ):
Pour ajouter une nouvelle télécommande, vous devrez d'abord procéder comme suit:
Le premier indique à Git que la télécommande existe, le second obtient les commits.
la source
Utilisation:
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.
la source
D'accord , la réponse est simple ... Vous voyez essentiellement la branche, mais vous n'avez pas encore de copie locale! ...
Vous avez besoin de
fetch
la succursale ...Vous pouvez simplement récupérer puis passer à la succursale, utilisez la commande d'une ligne ci-dessous pour le faire:
J'ai également créé l'image ci-dessous pour que vous puissiez partager les différences, voir comment cela
fetch
fonctionne et comment c'est différent depull
:la source
test
ressemble à une nouvelle branche, il est donc peu probable qu'elle soit présente localement. Sinon, vous pourriez le tirer plus facilement avec une seulegit pull
commande.fetch
sanspull
changements de congé dans la copie récupérée mais pas dans la branche locale, menant à votre succursale locale ne pas être mise à jour?Pour cloner un référentiel Git, procédez comme suit:
La commande ci-dessus extrait toutes les branches, mais seule la
master
branche sera initialisée. Si vous souhaitez commander les autres succursales, faites:Cette commande extrait la branche distante et le nom de votre branche locale sera le même que la branche distante.
Si vous souhaitez remplacer le nom de votre succursale locale lors du paiement:
Maintenant, votre nom de branche local est
enhancement
, mais votre nom de branche distante estfuture_branch
.Documentation
la source
master
, cela ne fonctionnera pas.Tu peux essayer
ou
la source
--track
n'est plus nécessaire dans les nouvelles versions de git, car il est défini par défaut, comme expliqué dans cette réponse précédente .Tout d'abord, vous devez faire:
git fetch
# Si vous ne connaissez pas le nom de la succursaleDeuxièmement, vous pouvez vérifier la succursale distante dans votre section locale en:
-b
créera une nouvelle branche avec le nom spécifié à partir de votre branche distante sélectionnée.la source
J'utilise la commande suivante:
la source
Commandes
sont égaux à
et alors
Les deux vont créer un à
latest fixes_for_dev
partirdevelopment
la source
Si la branche est sur autre chose que la
origin
télécommande, j'aime faire ce qui suit:Cela va extraire la
next
branche de laupstream
télécommande vers une branche locale appeléesecond/next
. Ce qui signifie que si vous avez déjà une branche locale nommée suivante, elle n'entrera pas en conflit.la source
git fetch && git checkout your-branch-name
la source
aucune de ces réponses n'a fonctionné pour moi. cela a fonctionné:
git checkout -b feature/branch remotes/origin/feature/branch
la source
git
lors de l'appel de lagit branch -a
commande, mais je n'en étais pas sûr, alors je l'ai utiliségit checkout -b apps/FEATURE/branch origin/apps/FEATURE/branch
et cela a semblé fonctionner. Message:Branch 'apps/FEATURE/branch' set up to track remote branch 'apps/FEATURE/epicBranch' from 'origin'. Switched to a new branch 'apps/FEATURE/branch'
J'étais coincé dans une situation en voyant
error: pathspec 'desired-branch' did not match any file(s) known to git.
toutes les suggestions ci-dessus. Je suis sur git version 1.8.3.1.Cela a donc fonctionné pour moi :
L'explication derrière est que j'ai remarqué que lors de la récupération de la branche distante, elle a été récupérée dans FETCH_HEAD:
la source
Exécutez simplement
git checkout
avec le nom de la branche distante. Git créera automatiquement une branche locale qui suivra la branche distante:Cependant, si ce nom de branche se trouve dans plus d'une télécommande, cela ne fonctionnera pas car Git ne sait pas lequel utiliser. Dans ce cas, vous pouvez utiliser:
ou
En 2.19 , Git a appris la
checkout.defaultRemote
configuration, qui spécifie une télécommande par défaut lors de la résolution d'une telle ambiguïté.la source
git branch -r
indique que le nom de l'objet n'est pas valide, car ce nom de branche n'est pas dans la liste des branches locales de Git. Mettez à jour votre liste de succursales locales depuis l'origine avec:Et puis essayez à nouveau de vérifier votre succursale distante.
Cela a fonctionné pour moi.
Je crois que cela
git fetch
attire toutes les branches éloignées, ce qui n'était pas ce que l'affiche originale voulait.la source
git remote update
récupérera également toutes les branches distantes .La
git remote show <origin name>
commande 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:
Utilisez ces étapes pour récupérer des branches distantes:
Exemple:
la source
$ git clone -b release --single-branch --depth 5 https://github.com/user/repo.git
Wron't information$ git remote show origin
this ne répertorie pas toutes les branches distantes avec des référentiels clonés à branche unique.Récupérez à partir de la télécommande et passez à la succursale.
Par exemple:
la source
D'autres gars et filles donnent les solutions, mais je peux peut-être vous dire pourquoi.
Does nothing
n'est pas égaldoesn'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. Ai-je raison?Si la réponse est «oui», je peux vous en dire la cause.
La raison en est qu'il existe un fichier (ou dossier) nommé «test» dans votre arborescence de travail.
Une fois
git checkout xxx
analysé,xxx
au début à un nom de branche, mais il n'y a pas de branche nommée test.xxx
c'est un chemin, et heureusement (ou malheureusement), il existe un fichier nommé test. Celagit checkout xxx
signifie donc rejeter toute modificationxxx
fichier.xxx
non plus, Git essaiera de créer le fichierxxx
selon certaines règles. L'une des règles est de créer une branche nomméexxx
si elleremotes/origin/xxx
existe.la source
Pour obtenir des succursales nouvellement créées
Pour basculer dans une autre branche
la source
Vous pouvez commencer à suivre toutes les branches distantes avec le script Bash suivant:
Voici également une version monoligne:
la source
git checkout -b "Branch_name" [B signifie Créer une branche locale]
git branch --all
git checkout -b "Votre nom de succursale"
git branch
extraction réussie de la branche principale vers la branche de développement
la source
pour obtenir toutes les succursales distantes, utilisez ceci:
puis passez à la succursale:
la source
Utilisez
fetch
pour tirer toute votre télécommandePour répertorier les succursales distantes:
Pour lister toutes vos succursales
Pour commander / changer une succursale
la source
git branch -l
et aucune branche distante n'a été montrée.git pull --all
ougit fetch --all
git branch -l
n'affiche toujours que les succursales locales . Il semble fonctionner exactement commegit branch
sans-l
, alors quelle est la raison-l
?master
n'est pas une branche distante.-l
drapeau pour la liste. Vous pouvez--list
également utiliserPour nous, il semble que la
remote.origin.fetch
configuration ait posé problème. Par conséquent, nous ne pouvions pas voir d'autres branches distantes quemaster
, doncgit fetch [--all]
n'a pas aidé. Ni l'ungit checkout mybranch
ni l' autregit checkout -b mybranch --track origin/mybranch
n'a fonctionné, même s'il était certainement éloigné.La configuration précédente ne pouvait
master
être récupérée:Corrigez-le en utilisant
*
et en récupérant les nouvelles informations depuis l'origine:Maintenant, nous pourrions
git checkout
la succursale distante localement.Aucune idée de comment cette config s'est retrouvée dans notre dépôt local.
la source
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 de paiement, sinon git ne saura pas de quelle branche vous parlez.
Par exemple, j'ai essayé d'extraire une branche distante nommée comme
#9773
mais la commande ne fonctionnait pas correctement, comme indiqué dans l'image ci-dessous:Pour une raison quelconque, je me suis demandé si le symbole pointu (#) pouvait y être
'#9773'
lié , puis j'ai essayé d'entourer le nom de la branche avec des guillemets simples, comme rathen que juste#9773
, et heureusement, cela a bien fonctionné.la source
#
caractère est utilisé pour les commentaires, donc tout ce qui suit#
sera ignoré. C'est une chose shell et pas quelque chose de spécifique à git. L'utilisation de guillemets antislash avant le#
devrait suffire.Veuillez suivre la commande pour créer un dossier vide. Entrez cela et utilisez cette commande:
la source