J'obtiens cette erreur pour pull:
Votre configuration spécifie de fusionner avec la référence 'refs / heads / feature / Sprint4 / ABC-123-Branch' de la télécommande, mais aucune référence de ce type n'a été récupérée.
Cette erreur ne vient pour aucune autre branche.
La particularité de cette branche est qu'elle est créée à partir du commit précédent d'une autre branche.
Mon fichier de configuration ressemble à:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
[remote "origin"]
url = <url here>
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "new-develop"]
remote = origin
merge = refs/heads/new-develop
[branch "feature/Sprint4/ABC-123-Branch"]
remote = origin
merge = refs/heads/feature/Sprint4/ABC-123-Branch
Réponses:
Qu'est-ce que cela signifie
Votre amont - la télécommande que vous appelez
origin
- n'a plus, ou n'a peut-être jamais eu (il est impossible de dire à partir de cette seule information) une branche nomméefeature/Sprint4/ABC-123-Branch
. Il y a une raison particulièrement courante à cela: quelqu'un (probablement pas vous, ou vous vous en souvenez) a supprimé la branche dans cet autre référentiel Git.Que faire
Cela dépend de ce que vous voulez . Voir la section discussion ci-dessous. Vous pouvez:
Discussion
Vous devez être en cours d'exécution
git pull
(si vous étiez en coursgit merge
d' exécution, vous obtiendrez un message d'erreur différent ou aucun message d'erreur du tout).Lorsque vous exécutez
git fetch
, votre Git contacte un autre Git, en fonction de laurl
ligne sous la[remote "origin"]
section de votre configuration. Ce Git exécute une commande (upload-pack
) qui, entre autres, envoie à votre Git une liste de toutes les branches. Vous pouvez utilisergit ls-remote
pour voir comment cela fonctionne (essayez-le, c'est éducatif). Voici un extrait de ce que j'obtiens en exécutant ceci sur un référentiel Git pourgit
lui-même:Les
refs/heads/
entrées répertorient toutes les branches qui existent sur la télécommande, 1 avec les ID de validation correspondants (pour lesrefs/tags/
entrées, les ID peuvent pointer vers des objets de balise plutôt que des validations).Votre Git prend chacun de ces noms de branche et le change en fonction de la ou des
fetch
lignes de cette mêmeremote
section. Dans ce cas, votre Git remplacerefs/heads/master
parrefs/remotes/origin/master
, par exemple. Votre Git fait cela avec chaque nom de branche qui apparaît.Il enregistre également les noms originaux dans le fichier spécial
FETCH_HEAD
(vous pouvez voir ce fichier si vous regardez dans votre propre.git
répertoire). Ce fichier enregistre les noms et identifiants récupérés.La
git pull
commande est conçue comme un raccourci pratique: elle s'exécutegit fetch
sur la télécommande appropriée, puisgit merge
(ou, si vous ygit rebase
êtes invité, ) avec les arguments nécessaires pour fusionner (ou rebaser) comme indiqué par la[branch ...]
section. Dans ce cas, votre[branch "feature/Sprint4/ABC-123-Branch"]
section dit de récupérerorigin
, puis de fusionner avec l'ID trouvé sous le nomrefs/heads/feature/Sprint4/ABC-123-Branch
.Puisque rien n'a été trouvé sous ce nom, se
git pull
plaint et s'arrête.Si vous exécutez cela en deux étapes distinctes,
git fetch
puisgit merge
(ougit rebase
), votre Git examinera vosremotes/origin/
branches de suivi à distance mises en cache pour voir avec quoi fusionner ou rebaser. S'il y avait une telle succursale à un moment donné, vous pouvez toujours avoir la succursale de suivi à distance. Dans ce cas, vous n'obtiendrez pas de message d'erreur. S'il n'y a jamais eu une telle branche, ou si vous avez exécutégit fetch
avec--prune
(qui supprime les branches de suivi à distance mortes), de sorte que vous n'ayez pas de branche de suivi à distance correspondante, vous obtiendrez une plainte, mais elle ferait référence à laorigin/feature/Sprint4/ABC-123-Branch
place.Dans les deux cas , nous pouvons conclure qu'il
feature/Sprint4/ABC-123-Branch
n'existe pas actuellement sur la télécommande nomméeorigin
.Il a probablement existé à un moment donné, et vous avez probablement créé votre branche locale à partir de la branche de suivi à distance. Si tel est le cas, vous avez probablement toujours la branche de suivi à distance. Vous pouvez rechercher qui a supprimé la branche de la télécommande et pourquoi, ou vous pouvez simplement pousser quelque chose pour la recréer, ou supprimer votre branche de suivi à distance et / ou votre branche locale.
1 Eh bien, tout ce qu'il va admettre , au moins. Mais à moins qu'ils n'aient spécifiquement caché certaines références, la liste comprend tout.
Edit, juillet 2020: Il existe un nouveau protocole de récupération qui peut éviter de tout lister , et ne répertorie que les noms que votre Git dit rechercher. Cela peut aider avec les référentiels qui ont un grand nombre de branches et / ou de balises. Cependant, si votre Git est intéressé par tous les noms possibles, vous obtiendrez toujours tous les noms ici.
la source
git remote prune origin
git fetch --prune origin
ou définissezfetch.prune
surtrue
dans votre configuration (tous les trois sont destinés à faire la même chose, bien que dans quelques versions de Git, certaines d'entre elles n'étaient pas tout à fait fiables).git checkout <your remote branch>
et tout être bon (dans certains cas).git branch --set-upstream-to=origin/master master
pour changer le paramètre en amont pour votre localmaster
. Supprimer-et-recréer a cela comme un effet secondaire (en supposant que vous utilisez le style DWIMgit checkout master
pour le créer), avec un effet secondaire supplémentaire de forcer votremaster
à correspondre à votreorigin/master
.Cela peut également se produire si vous / quelqu'un a renommé la branche. Suivez donc ces étapes (si vous savez que le nom de la branche est renommé) En supposant que le nom de la branche plus tôt est
wrong-branch-name
et que quelqu'un l'a renommécorrect-branch-name
So.git pull
(vous verrez ceci "Votre configuration spécifie ..")git push --set-upstream origin correct-branch-name
git pull
(vous ne recevrez pas le message précédent)la source
git push
et cela ne fonctionnera pas si la branche actuelle est derrière sa télécommande.git pull origin correct-branch-name
est assez.Vérifiez si votre branche distante est disponible pour l'extraction. J'ai eu le même problème, j'ai finalement réalisé que la branche distante avait été supprimée par quelqu'un.
la source
Pour moi, c'était une question de sensibilité à la casse. Ma branche locale était Version_feature2 au lieu de Version_Feature2. J'ai revérifié ma branche en utilisant le bon boîtier, puis git pull a fonctionné.
la source
Cette erreur peut également être reçue lorsque le nom de la branche d'origine a un problème de cas.
Par exemple: la branche d'origine est
team1-Team
et la branche locale a été extraite en tant queteam1-team
. Ensuite, celaT
dans-Team
ett
en-team
peut provoquer une telle erreur. Cela s'est produit dans mon cas. Ainsi, en changeant le nom local avec le nom de la branche d'origine, l'erreur a été résolue.la source
Dans mon cas, je manquais simplement de validation initiale sur la branche distante, donc la branche locale ne trouvait rien à tirer et elle donnait ce message d'erreur.
J'ai fait:
la source
J'ai eu une erreur similaire lorsque la cause réelle était que mon disque était plein. Après avoir supprimé certains fichiers, a
git pull
commencé à fonctionner comme prévu.la source
J'ai continué à rencontrer ce problème. Dans mon cas, le commentaire de @ Jerreck sur les différences de casse dans les noms de branche était la cause de cette erreur. Certains outils Windows ne sont pas conscients du respect de la casse.
Pour désactiver le respect de la casse dans git, exécutez cette commande:
Notez que cela aura un impact plus important que les noms de branche. Par exemple, si vous avez "Foo.h" et "foo.h" dans le même répertoire (ce n'est pas une bonne idée lors de la création de logiciels pour Windows), je suppose que vous ne pouvez pas désactiver la sensibilité à la casse.
la source
Vérifiez simplement si quelqu'un a supprimé la branche à distance.
la source
Dans mon cas, j'avais supprimé la branche d'origine d'où ma branche actuelle dérivait. Donc, dans le fichier .git / config, j'avais:
le simil2.0.5 a été supprimé. Je l'ai remplacé par le même nom de branche:
et ça a marché
la source
Vous pouvez facilement lier votre succursale locale à une succursale distante en exécutant:
la source
Pour moi, cela s'est produit parce que j'ai fusionné un développement de branche en maître à l'aide de l'interface Web, puis j'ai essayé de synchroniser / tirer en utilisant VSCode qui était ouvert sur la branche de développement (c'est étrange que je ne puisse pas changer en maître sans obtenir cette erreur.)
Il est logique de ne pas le trouver refs / heads / dev - pour moi, il était plus facile de simplement supprimer le dossier local et de le cloner à nouveau.
la source
Je viens de recevoir exactement cette erreur en faisant "git pull" alors que mon disque était plein. Créé un peu d'espace et tout a recommencé à fonctionner correctement.
la source
Vous pouvez modifier le
~/.gitconfig
fichier dans votre dossier de départ. C'est là que tous les paramètres --global sont enregistrés.Ou, utilisez
git config --global --unset-all remote.origin.url
et après l'exécutiongit fetch
avec l'URL du référentiel.la source
J'étais confronté au même problème où ma branche actuelle était dev et je vérifiais la branche MR et faisais git pull par la suite. Une solution de contournement simple que j'ai prise a été de créer un nouveau dossier pour MR Branch et d'y faire git pull suivi de git clone.
Donc, fondamentalement, j'ai maintenu différents dossiers pour pousser le code vers différentes branches.
la source
J'ai juste eu la même erreur, quand je n'ai pas utilisé la bonne casse. Je pourrais consulter «intégration». Git m'a dit d'effectuer une
git pull
mise à jour de ma branche. Je l'ai fait, mais j'ai reçu l'erreur mentionnée. Le nom correct de la succursale est «Intégration» avec un «I» majuscule. Quand j'ai vérifié cette branche et tiré, cela a fonctionné sans problème.la source
Si un autre pull fonctionne, cela signifie que votre Internet n'était pas connecté.
la source