Ce que vous voyez est un git dispositif de sécurité. git refuse de mettre à jour la branche à distance avec votre succursale parce que votre succursale de la tête de s'engager n'est pas un descendant direct de l'actuel chef de commit de la branche que vous êtes le pousser à.
Si ce n'était pas le cas, alors deux personnes en le poussant vers la même référentiel, à la même époque ne serait pas savoir qu'il y avait un nouveau commit à venir dans le même temps, et celui qui a poussé dernier perdrait le travail de la précédente poussoir sans que l'une d'entre eux cette réalisation.
Si vous savez que vous êtes la seule personne qui pousse et vous souhaitez faire une modification de commettre ou de pousser un commit qui serpente le dos de la direction générale, vous pouvez "forcer" git pour la mise à jour de la branche distante en utilisant le commutateur-f.
git push -f origin master
Même cela peut ne pas fonctionner comme git permet à des dépôts distants de refuser non-fastforward pousse à l'extrême fin à l'aide de la variable de config 'recevoir.denynonfastforwards'. Si c'est le cas, le rejet de la raison ressemblera à ceci (notez la distance rejeté " partie):
! [remote rejected] master -> master (non-fast forward)
Pour contourner ce problème, vous devez modifier soit le dépôt distant de config ou comme un sale hack vous pouvez la supprimer et la recréer la direction générale ainsi:
git push origin :master
git push origin master
En général, le dernier paramètre git push
utilise le format <local_ref>:<remote_ref>
où local_ref
est le nom de la branche sur le dépôt local et remote_ref
est le nom de la branche sur le dépôt distant. Cette commande paire utilise deux abréviations. :master
a une valeur null local_ref qui signifie pousser un null branche sur le côté distant master
, c'est à dire supprimer la branche distante. Un nom de branche sans :
moyen de pousser la branche locale avec le nom donné à la branche à distance avec le même nom. master
dans cette situation est l'abréviation de l' master:master
.