Git: Comment ignorer l'avance rapide et de revenir origine [direction] de s'engager plus tôt?
J'ai utilisé
git reset --hard dc082bc...
pour revenir à la branche un état précédent, en raison d'une mauvaise engage. Cela a remonté ma branche locale de l'amende. Cependant, je tiens à rembobiner la direction générale sur "l'origine" dans la même livraison, de sorte que je peux recommencer. Quelqu'un pourrait-il me dire comment faire pour revenir à l'origine de la branche (pas de master) pour ce commit?
J'ai essayé git push origin master, mais il donne l'erreur suivante
! [rejeté] branche -> direction de la (non-avance rapide) erreur: impossible de pousser des refs '[email protected]:xxx/xxx.git' Pour vous éviter de perdre de l'histoire, non de l'avance rapide des mises à jour ont été rejetées Fusionner les modifications distantes avant de pousser à nouveau. Voir la Note sur pour avancer rapidement' de 'git push --help" pour plus de détails.
Vous allez bientôt (git1.8.5, T4 2013) faire un
git push --force
avec plus de soin. Voir ma réponse ci-dessous.OriginalL'auteur igniteflow | 2010-07-02
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer
git push --force
à force de le pousser.Donc, si beaucoup de gens ont déjà tiré la même branche d'origine, qui peuvent causer des rebase problème de leur côté.
Cette opération peut être bloqué sur le côté serveur, comme ebneter points (dans les commentaires):
Toutefois, dans le cas de GitHub, ces paramètres ne sont pas facilement disponibles pour l'utilisateur la gestion de son dépôt GitHub.
Donc, si vous
git push --force
par erreur, tout ce que vous êtes de gauche est l'ouverture d'un cas à l'GitHub soutien, de vérifier leur local (c'est à dire "GitHub") reflogs et voir si ils peuvent restaurer les vieux s'engage.(Depuis reflogs sont locales, comme j'ai été rappelée récemment. Donc, s'engage, qui sont remplacés par de nouveaux cours d'une
push --force
ne sont encore visibles, si aucungit gc
" ou "git prune
' a déjà eu lieu, à la GitHub côté serveur)Donc Marco Ceppi insiste (dans les commentaires):
vrai. Bien qu'il doit vraiment être utilisé avec précaution (voir par exemple support.github.com/discussions/repos/...)
Selon la façon dont la distance est configuré, cependant, cela peut ne pas fonctionner -- tous mes centrale repos sont configurés avec recevoir.denyNonFastForwards = true et recevoir.denyDeletes = true, auquel cas une telle chirurgie doit être fait sur le serveur distant.
mais c'est GitHub nous parlons ici; il ne semble pas offrir ce genre de paramètre côté serveur: support.github.com/discussions/feature-requests/...
Ah, je ne savais pas que c'était GitHub. Pourtant, il est important de noter en général.
OriginalL'auteur VonC
Ajouter à mon réponse précédente, et pour tenir compte du fait que forcé
git push
peut vraiment gâcher autres contributeurs local de repos, git 1.8.5 (à venir T4 2013) va voir une nouvelle option:Voir l'origine de cette option dans ce fil:
Vous pouvez voir l'intégralité de la documentation de
--force-with-lease
dans s'engager 28f5d17Qui expliquent la "location" de la partie de l'option:
C'est déjà testé, et mentionné dans le "Quelle est la cuisson dans git.git (Août 2013, #07; Wed, 28)":
Remarque: "
git push --force-with-lease
" qui leur a été enseigné rapport si le pushnécessaire à la force (ou l'avance rapide).
Si cette commande est plus détaillée dans sa sortie avec git 2.8 (Mars 2016)
Méfiez-vous de cette option est ignorée/contournée, comme expliqué dans Git 2.13 (T2 2017).
OriginalL'auteur VonC