Question Votre configuration spécifie de fusionner avec le 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' depuis la télécommande, mais non   cette référence 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 de la validation précédente d'une autre branche.

Mon fichier de configuration ressemble à ceci:

[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

56
2018-05-02 14:03


origine


Réponses:


Que faire

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

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

Discussion

Vous devez être en train de courir git pull (si vous couriez git merge vous obtiendrez un message d'erreur différent, ou pas de message d'erreur du tout.

Qu'est-ce qui s'est passé ici est que 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 seule information) une branche nommée feature/Sprint4/ABC-123-Branch.

Quand tu cours git fetch, votre Git contacte un autre Git, basé sur le url aligner sous le [remote "origin"] section de votre configuration. Que 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, c'est éducatif). Voici un extrait de ce que j'obtiens lorsque je l'exécute sur un dépôt 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]

le refs/heads/ les entrées listent toutes les branches qui existent sur la télécommande,1 avec les identifiants de validation correspondants (pour refs/tags/ entrées les identifiants peuvent pointer sur des objets tag plutôt que sur des commits).

Votre Git prend chacun de ces noms de branche et changements selon le fetch ligne (s) dans ce même remote section. Dans ce cas, votre Git remplace refs/heads/master avec refs/remotes/origin/master, par exemple. Votre Git fait cela avec chaque nom de branche qui se présente.

Il enregistre également les noms d'origine dans le fichier spécial FETCH_HEAD (vous pouvez voir ce fichier si vous jetez un coup d’œil dans votre propre .git annuaire). Ce fichier enregistre les noms et identifiants récupérés.

le git pull commande est conçu comme un raccourci pratique: il fonctionne git fetch sur la télécommande appropriée, puis git merge (ou, si cela lui est demandé, git rebase) avec tous les arguments nécessaires pour fusionner (ou rebaser) selon les instructions du [branch ...] section. Dans ce cas, votre [branch "feature/Sprint4/ABC-123-Branch"] la section dit d'aller chercher de origin, puis fusionner avec l'ID trouvé sous le nom refs/heads/feature/Sprint4/ABC-123-Branch.

Comme rien n'a été trouvé sous ce nom, git pull se plaint et s'arrête.

Si vous avez exécuté ceci comme deux étapes distinctes, git fetch et alors git merge (ou git rebase), votre Git regarderait votre cache remotes/origin/ suivi à distance des branches pour voir avec quoi fusionner ou rebaser. S'il y a était une telle succursale à 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 avait jamais eu une telle branche, ou si vous avez couru git fetch avec --prune(qui supprime les succursales de suivi à distance mortes), de sorte que vous n’ayez pas de branche de suivi à distance correspondante, vous obtiendrez une plainte, mais elle se réfère à origin/feature/Sprint4/ABC-123-Branch au lieu.

Dans tous les cas, nous pouvons conclure que feature/Sprint4/ABC-123-Branch n'existe pas maintenant sur la télécommande nommée origin.

Il a probablement existé à un moment donné et vous avez probablement créé votre branche locale à partir de la branche de suivi à distance. Si oui, vous avez probablement encore la branche de suivi à distance. Vous pourriez chercher à savoir qui a supprimé la branche de la télécommande et pourquoi, ou vous pourriez simplement pousser quelque chose pour la recréer, ou supprimer votre branche de suivi à distance et / ou votre succursale locale.


1Eh bien, tout ce qu'il va admettre au moins Mais à moins qu'ils n'aient spécifiquement caché des références, la liste comprend tout.


34
2018-05-02 18:41



Vérifiez si votre succursale distante est disponible pour tirer. J'ai eu le même problème, enfin réalisé que la branche distante avait été supprimée par quelqu'un.


18
2017-10-19 22:20



Cela peut également arriver si vous / quelqu'un a renommé la branche. Alors suivez ces étapes (si vous savez que le nom de la branche est renommé) En supposant un nom de branche antérieur comme wrong-branch-name et quelqu'un l'a renommé pour correct-branch-name Alors.

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 n'obtiendrez pas le message précédent)


14
2018-01-04 16:57



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:

git commit -m 'first commit' // on remote branch
git pull // on local branch

1
2018-04-21 08:28



J'ai eu une erreur similaire lorsque la cause réelle était que mon disque était plein. Après avoir supprimé certains fichiers, git pull a commencé à travailler comme je m'y attendais.


0
2018-02-12 16:39



Si un autre pull fonctionne, cela signifie que votre internet n’est pas connecté.


0
2017-08-04 16:49



Pour moi, cela s'est produit parce que j'ai fusionné un dev de branche avec master en utilisant l'interface Web, puis j'ai essayé de synchroniser / tirer en utilisant VSCode qui était ouvert sur la branche dev.

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 le trouver refs / heads / dev - pour moi, il était plus simple de supprimer le dossier local et de cloner à nouveau.


0
2017-09-23 05:47



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 et ensuite git pull a fonctionné.


0
2017-10-16 18:33



Cette erreur peut également être reçue lorsque le nom de la branche d'origine a un problème de casse.

Par exemple: la branche d’origine est team1-Team et la branche locale a été checkout comme team1-team. Ensuite ceci T dans -Team et t dans -team peut causer 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.


0
2017-11-28 09:08