Git 1.8: erreur push: dst ref refs / têtes / master reçoit de plus d'un src
Un autre problème avec git 1.8:
$ git push
error: dst ref refs/heads/master receives from more than one src.
error: failed to push some refs to '[email protected]:xxx.git'
Suggestions? Il fonctionnait avant la mise à niveau à 1,8.
$ git remote -v
origin [email protected]:xxx.git (fetch)
origin [email protected]:xxx.git (push)
Après recherche sur google, j'ai essayé d'abord ceci:
$ git push origin :refs/heads/refs/heads/master
remote: warning: Allowing deletion of corrupt ref.
To [email protected]:xxx.git
- [deleted] refs/heads/master
Aucune idée de ce qui est qui et pourquoi il a été corrompu.
$ git pull
Already up-to-date.
$ git push
error: dst ref refs/heads/master receives from more than one src.
error: failed to push some refs to '[email protected]:xxx.git'
Toujours pas de travail, mais origin master
a fait travailler au moins:
$ git push origin master
Counting objects: 42, done.
To [email protected]:xxx.git
3e3fc87..6e11d2a master -> master
D'accord, ce genre de fixe, mais quelle était la cause du problème? Pourquoi origin/master soudainement devenu corrompu? Qu'ai-je fait avec git push origin :refs/heads/refs/heads/master
?
.git/config
:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = false
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = [email protected]:xx.git
push = HEAD
[branch "master"]
remote = origin
merge = refs/heads/master
ls .git/refs/remotes/origin:
HEAD master refs
En fin de compte, maintenant, je dois git push origin master
à chaque fois. Et le plus ennuyeux, c'est que certains repos travail avec git push
mais sur la plupart d'entre eux j'ai pu ajouter origin master
mais je ne comprends pas pourquoi, et il ne peut pas l'être que je suis seul à avoir ce problème.
source d'informationauteur firedev
Vous devez vous connecter pour publier un commentaire.
Une autre manière d'obtenir cette erreur si vous avez accidentellement tapez le nom de la direction générale, vous êtes en essayant de repousser les deux fois, c'est à dire:
Les rendements de cette erreur. Correctif est évident, une fois que vous êtes conscient que vous que vous l'avez fait:
Il semble que vous avez une copie supplémentaire de vos
refs
arbre dansrefs/remotes/origin
. Remarquez comment dansrefs/remotes/origin
vous avez un supplément derefs
répertoire? Je ne sais pas comment c'est arrivé là, mais c'est probablement ce qui est la cause de vos problèmes. En raison de la manière dont Git gère les abréviations des refs (vous permettant de déposer le préfixe, en utilisant seulement le suffixe commeorigin/master
), il est probablement de se confondre en ayant à la foisrefs/remotes/origin/master
etrefs/remotes/refs/remotes/origin/master
.Je ne sais pas comment il est arrivé dans cet état; peut-être un bug dans un Git outil, peut-être une faute de frappe que vous faites à un certain point. Vous avez fixé la moitié du problème par la suppression de la branche à distance qui a été suivi de cette double direction. Je serais prêt à parier que vous pouvez fixer l'autre moitié du problème, et être en mesure de faire
git push
encore une fois, si vous supprimez lerefs/remotes/origin/refs
répertoire.La suite de ce qui est expliqué dans cette git patch ancienne (2007!)
refs/heads/refs/heads/master
ressemble à une branche mal nommé "refs/heads/master" (à l'aide des espaces de noms pour la définition hiérarchique nom de la branche), et les points à rien.La suppression c'était la bonne décision.