9
votes

GIT: Comment ignorer rapidement l'avenir et revenir à l'origine de [Branche] à une commission antérieure?

j'ai utilisé

 ! [rejected]        branch -> branch (non-fast-forward)
error: failed to push some refs to 'git@github.com:xxx/xxx.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'Note about
fast-forwards' section of 'git push --help' for details.


1 commentaires

Vous allez bientôt (git1.8.5, trimestre 2013) faire un git poussoir --force plus attentivement. Voir Ma nouvelle réponse ci-dessous .


3 Réponses :


18
votes

Vous pouvez essayer git push -force code> pour forcer la poussée.

--force


8 commentaires

git push -f fait la même chose.


@Marco: vrai. Bien que cela doit vraiment être utilisé soigneusement (voir par exemple support.github.com/discussions/repos/... )


En fonction de la configuration de la télécommure, cela peut ne pas fonctionner - tous mes reforms centraux sont configurés avec Recevoir.DenynonFastForwards = true et réception.denydelettes = true, auquel cas une telle chirurgie doit être effectuée sur le serveur distant .


@ebneter: Mais c'est GitHub dont nous parlons ici; Il ne semble pas offrir ce type de paramètre côté serveur: support.github.com/discussions/feature-requests/.../a>


Ah, je n'ai pas vu que c'était Github. Néanmoins, il est important de noter en général.


Correct - comme VONC a dit - cela pourrait vraiment gâcher d'autres contributeurs Repos local si vous forcez des pousses - bien que cela soit parfois un mal nécessaire (j'ai peut-être dû le faire deux fois dans ma durée de vie d'utiliser Git).


@ebneter: dûment noté. En fait, j'ai mis à jour ma réponse pour inclure vos commentaires et plus.


@Vonc: Excellent. C'est bizarre que GitHub ne vous permet pas de configurer des choses de cette façon.



30
votes

Ajouter à mon réponse précédente et pour aborder le fait qu'un forcé git pousse code > Peut vraiment gâcher les repos locaux d'autres contributeurs, GIT 1.8.5 (Le montant du quatrième trimestre 2013) sera une nouvelle option:

$ git fetch ko next
$ anchor=$(git rev-parse --verify FETCH_HEAD)
$ for remote in ko repo gph github2
  do
    git push --force-with-lease=refs/heads/next:$anchor $remote next
  done


1 commentaires

Et après une push -force, d'autres peuvent récupérer joliment: Stackoverflow.com/a/20423029/6309



0
votes

Réinitialisation GIT CODE> && GIT PUSH CODE> AVEC FORCE OBTROWITE
# git push branch_name --force

# local master
$ git push origin master --force

# remote master
$ git push origin/master -f


0 commentaires