web-dev-qa-db-fra.com

Votre configuration spécifie de fusionner avec le <nom de la branche> à partir de la télécommande, mais aucune référence de ce type n'a été extraite.

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
88
Farrukh Chishti

Qu'est-ce que cela signifie

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.

Que faire

Cela dépend de ce que vous voulez. Voir la section de discussion ci-dessous. Vous pouvez:

  • créer ou recréer la branche sur la télécommande, ou
  • supprimer votre agence locale, ou
  • tout ce que vous pouvez penser.

Discussion

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.

57
torek

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. 

29
Malhaar Punjabi

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)

26
Extreme

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é.

2
nicko

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.

2
user1747134

Il suffit de vérifier si quelqu'un a supprimé la branche distante.

2
AB Abhi

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
2
Nicola Gallazzi

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.

2
akgupta

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.

1
Stéphane

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.

0
Davvit

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.

0
Angelo Mendes

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.

0
Monalisa Das

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é

0

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. 

0
user7550381