Je reçois cette erreur pour tirer:
Votre configuration spécifie de fusionner avec le ref 'refs/heads/feature/Sprint4/ABC-123-Branch' de la télécommande, mais no cet arbitre a été cherché.
Cette erreur ne vient pas pour une 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
Votre amont - la télécommande que vous appelez Origin
- n'a plus, ou peut-être jamais eu (il est impossible de dire à partir de cette information seule) une branche nommée feature/Sprint4/ABC-123-Branch
. Il y a une raison particulièrement commune à cela: quelqu'un (probablement pas vous, ou vous vous en souviendrez) a supprimé la branche de cet autre référentiel Git.
Cela dépend de ce que vous voulez. Voir la section de discussion ci-dessous. Vous pouvez:
Vous devez exécuter git pull
(si vous exécutiez git merge
, 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 la ligne url
dans la section [remote "Origin"]
de votre configuration. Ce Git exécute une commande (upload-pack
) qui, entre autres choses, envoie votre Git une liste de toutes les branches. Vous pouvez utiliser git ls-remote
pour voir comment cela fonctionne (essayez-le, il est éducatif). Voici un extrait de ce que je reçois lors de l’exécution de cette opération sur un référentiel Git pour git
lui-même:
$ git ls-remote Origin
From [url]
bbc61680168542cf6fd3ae637bde395c73b76f0f HEAD
60115f54bda3a127ed3cc8ffc6ab6c771cbceb1b refs/heads/maint
bbc61680168542cf6fd3ae637bde395c73b76f0f refs/heads/master
5ace31314f460db9aef2f1e2e1bd58016b1541f1 refs/heads/next
9e085c5399f8c1883cc8cdf175b107a4959d8fa6 refs/heads/pu
dd9985bd6dca5602cb461c4b4987466fa2f31638 refs/heads/todo
[snip]
Les entrées refs/heads/
répertorient toutes les branches présentes sur la télécommande,1 ainsi que les ID de validation correspondants (pour les entrées refs/tags/
, les ID peuvent pointer sur des objets de balises plutôt que sur des validations).
Votre Git prend chacun de ces noms de branches et changes selon les lignes fetch
de cette même section remote
. Dans ce cas, votre Git remplace refs/heads/master
par refs/remotes/Origin/master
, par exemple. Votre Git le fait avec chaque nom de branche qui apparaît.
Il enregistre également les noms d'origine dans le fichier spécial FETCH_HEAD
(vous pouvez voir ce fichier si vous regardez dans votre propre répertoire .git
). Ce fichier enregistre les noms et ID récupérés.
La commande git pull
est conçue comme un raccourci de commodité: elle exécute git fetch
sur la télécommande appropriée, puis git merge
(ou, si cela est indiqué, git rebase
) avec tous les arguments nécessaires pour fusionner (ou rebaser) comme indiqué par la section [branch ...]
. Dans ce cas, votre section [branch "feature/Sprint4/ABC-123-Branch"]
indique qu'il faut extraire de Origin
, puis fusionner avec n'importe quel ID trouvé sous le nom refs/heads/feature/Sprint4/ABC-123-Branch
.
Puisque rien n’a été trouvé sous ce nom, git pull
se plaint et s’arrête.
Si vous exécutiez cette opération en deux étapes distinctes, git fetch
, puis git merge
(ou git rebase
), votre Git examinerait les branches suivies à distance remotes/Origin/
mises en cache pour déterminer les éléments à fusionner ou à modifier. Si était une telle branche à la fois, vous pouvez toujours avoir la branche de suivi à distance. Dans ce cas, vous ne recevrez pas de message d'erreur. S'il n'y a jamais eu de telle branche, ou si vous avez exécuté git fetch
avec --Prune
(ce qui supprime les branches mortes de suivi à distance), de sorte que vous n'ayez pas de branche de suivi à distance correspondante, vous obtiendrez une plainte, mais cela renverra à Origin/feature/Sprint4/ABC-123-Branch
.
Dans les deux cas , nous pouvons conclure que feature/Sprint4/ABC-123-Branch
n'existe pas maintenant sur la télécommande nommée Origin
.
Elle existait probablement à un moment donné et vous avez probablement créé votre branche locale à partir de la branche de suivi à distance. Si c'est le cas, vous avez probablement encore la branche de suivi à distance. Vous pouvez chercher à savoir qui a supprimé la branche de la télécommande et pourquoi, ou vous pouvez simplement appuyer sur quelque chose pour la recréer ou supprimer votre branche de suivi à distance et/ou votre branche locale.
1Eh bien, tout ce que cela va admettre, au moins. Mais à moins qu'ils n'aient spécifiquement caché des références, la liste inclut tout.
Vérifiez si votre branche distante est disponible pour extraire ..____ J'ai eu le même problème, a finalement réalisé que la branche distante avait été supprimée par quelqu'un.
Cela peut également arriver si vous/quelqu'un avez 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 précédente s'appelle wrong-branch-name
et que quelqu'un l'a renommé to correct-branch-name
So.
git checkout correct-branch-name
git pull
(vous verrez ceci "Votre configuration spécifie ..")
git branch --unset-upstream
git Push --set-upstream Origin correct-branch-name
git pull
(vous ne recevrez pas le message précédent)
Pour moi, c'était un problème 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é.
J'ai eu une erreur similaire quand la cause réelle était que mon disque était plein. Après la suppression de certains fichiers, git pull
a commencé à fonctionner comme prévu.
Il suffit de vérifier si quelqu'un a supprimé la branche distante.
Dans mon cas, je manquais simplement de validation initiale sur une branche distante. Par conséquent, la branche locale ne trouvait rien à extraire et transmettait ce message d'erreur.
J'ai fait:
git commit -m 'first commit' // on remote branch
git pull // on local branch
Cette erreur peut également être reçue lorsque le nom de la branche d'origine présente un problème.
Par exemple: La branche d'origine est team1-Team
et la branche locale a été extraite sous le nom team1-team
. Ensuite, cette T
dans -Team
et t
dans -team
peut provoquer une telle erreur. C'est arrivé dans mon cas. Ainsi, en changeant le nom local avec le nom de la branche d'origine, l'erreur a été résolue.
J'ai continué à courir dans ce problème. Dans mon cas, le commentaire de @ Jerreck sur les différences de casse dans les noms de branche était à l'origine de cette erreur. Certains outils Windows ne sont pas conscients de la sensibilité à la casse.
Pour désactiver la sensibilité à la casse dans git, exécutez la commande suivante:
git config --global core.ignorecase true
Notez que cela aura plus d'impact que les noms de branches. Par exemple, si vous avez "Foo.h" et "foo.h" dans le même répertoire (ce n'est pas une bonne idée lorsque vous créez un logiciel pour Windows), je suppose que vous ne pouvez pas désactiver la sensibilité à la casse.
Pour moi, cela est dû au fait que j’ai fusionné une branche de développement en maître à l’aide d’une interface Web, puis que j’ai essayé de synchroniser/extraire à l’aide de VSCode qui était ouvert sur la branche de développement.
git pull
Your configuration specifies to merge with the ref 'refs/heads/dev'
from the remote, but no such ref was fetched.'
Il est logique de ne pas trouver les références/têtes/dev - pour moi, il était plus facile de simplement supprimer le dossier local et de le cloner à nouveau.
Vous pouvez éditer le fichier ~/.gitconfig
dans votre dossier personnel. C'est là que tous les paramètres --global sont enregistrés.
Ou bien, utilisez git config --global --unset-all remote.Origin.url
et après avoir exécuté git fetch
avec l'URL du référentiel.
Je faisais face au même problème où ma branche actuelle était dev et que je vérifiais auprès de la branche MR et que je me débrouillais par la suite. Pour résoudre ce problème, j’ai créé un nouveau dossier pour MR Branch et j’ai fait git pull suivi de git clone.
Donc, fondamentalement, j'ai maintenu différents dossiers pour transmettre le code à différentes branches.
Dans mon cas, j'avais supprimé la branche d'origine de laquelle ma branche actuelle provenait. Donc, dans le fichier .git/config, j’avais:
[branch "simil2.1.12"]
remote = Origin
merge = refs/heads/simil2.0.5
rebase = false
le simil2.0.5 a été supprimé. Je l'ai remplacé par le même nom de branche:
[branch "simil2.1.12"]
remote = Origin
merge = refs/heads/simil2.1.12
rebase = false
et cela a fonctionné
Je viens de recevoir exactement cette erreur en faisant "git pull" quand mon disque était plein J'ai créé de l'espace et tout a recommencé à fonctionner correctement.