Il semble que vous avez réécrit votre histoire (SHA-1 associée à votre livraison) dans la branche master
Cela signifie que vous ne pouvez pousser plus en mode avance rapide
les forces maître + le pousser à se faire:..
par Si vous avez l'option leading +, vous pouvez dire à git de mettre à jour l'adresse <dst>
même si la mise à jour n'est pas une avance rapide.
Remarque: cela peut être négatif si quelqu'un d'autre a déjà cloné votre référentiel, car il ne sera plus capable de tirer votre branche principale sans conflit.
Voir aussi SO answer for more.
Note: comme mentionné by Junio C. Hamano:
Il existe deux mécanismes de sécurité indépendants:
la sécurité de fin d'émission peut être remplacée par "git push --force
" et/ou en utilisant un refspec préfixé par un '+
');
la sécurité de l'extrémité réceptrice peut être remplacée par la variable de configuration receive.denynonfastworwards
du référentiel dans lequel vous insérez.
Ce dernier par défaut « dangereux », mais si la sécurité est activée dans le référentiel, forçant du côté émetteur ne le désactiver. IOW, les deux extrémités doivent être d'accord pour permettre le comportement dangereux.
Comme mentionné dans le Git FAQ, un cours d'action possible est:
La raison la plus probable est que vous devez tirer de la télécommande d'abord. Vous pouvez voir quels changements le côté distant a en récupérant d'abord, puis en vérifiant le journal.Par exemple,
$ git fetch origin
$ git log master..origin/master
la liste de tous les changements du côté distant a que votre côté ne fonctionne pas. Si vous voulez une représentation graphique, utilisez gitk --left-right master...origin/master
.
Les flèches vers la gauche correspondent aux modifications que vous souhaitez effectuer, les flèches situées à droite correspondent aux modifications effectuées sur le côté distant.
Autre solution (qui est ce que vous avez fait):
$ git push origin +branchname
Cela forcera la mise à jour. Si vous n'êtes pas autorisé, alors parfois cela fonctionnera:
$ git push origin :branchname
$ git push origin +branchname
-à-dire, supprimer la branche à distance d'abord (ce qui est souvent autorisée), puis re-pousser le « nouveau » (ou peut-être rembobiné) branche.
Soyez averti que si vous rembobinez des branches, d'autres pourraient avoir des problèmes lors du tirage.
Il y a une chance qu'ils fusionnent dans la branche qu'ils ont récupérée avec le nouveau que vous avez publié, gardant effectivement les changements dont vous essayez de vous débarrasser.
Cependant, ce ne seront que leurs copies qui auront les mauvaises révisions. Pour cette raison, les branches de rembobinage sont considérées comme légèrement antisociales. Néanmoins, c'est souvent approprié.
Ajout d'une autre solution, en réponse à votre commentaire. – VonC