J'avais un dépôt qui avait quelques mauvais commits (D, E et F pour cet exemple).
A-B-C-D-E-F master et origin/master
J'ai modifié le dépôt local spécifiquement avec un git reset --hard
. J'ai pris une branche avant la réinitialisation donc maintenant j'ai un dépôt qui ressemble à :
A-B-C master
\ D-E-F old_master
A-B-C-D-E-F origin/master
Maintenant j'avais besoin de certaines parties de ces mauvais commits donc j'ai cherry-pické les morceaux dont j'avais besoin et j'ai fait quelques nouveaux commits donc maintenant j'ai ce qui suit localement :
A-B-C-G-H master
\ D-E-F old_master
Maintenant je veux pousser cet état des choses vers le dépôt distant. Cependant, lorsque j'essaie de faire un git push
, Git me rejette poliment :
$ git push origin +master:master --force
Total 0 (delta 0), reused 0 (delta 0)
error: denying non-fast forward refs/heads/master (you should pull first)
To git@git.example.com:myrepo.git
! [remote rejected] master -> master (non-fast forward)
error: failed to push some refs to 'git@git.example.com:myrepo.git'
Comment faire pour que le dépôt distant accepte l'état actuel du dépôt local ?
2 votes
Il s'agit d'un duplicate "presque" de plusieurs questions "comment puis-je pousser des questions d'historique amendées", par exemple, voir la réponse ici stackoverflow.com/questions/253055/…
2 votes
C'est vrai et j'avais cherché sur StackOverflow une réponse avant de poster. Cependant, ma recherche n'avait trouvé que des réponses dans lesquelles un git push --force résolvait le problème. Merci d'avoir partagé le lien vers votre publication :)
2 votes
Tu pourras bientôt (git1.8.5, Q4 2013) être en mesure de faire un
git push -force
de manière plus prudente.