Rewind à distance à un avant de commettre
En tant que junior les utilisateurs de git, je suis submergé par une dure de fusion et doit avoir fait quelque chose de mal. J'ai fini par commettre mes résolutions de conflits avec un gâchis de déchets à l'intérieur de mes fichiers sources. La validation montre ajouts de beaucoup de lignes qui ressemblent à des <<<<<<< HEAD
et >>>>>>> a7b4de79431c2e73d28621c72c8d14820df1a24b
. La validation a été poussé à distance de l'origine déjà, donc je ne peux malheureusement pas seulement ammend la commettre.
Je veux revenir en arrière le dépôt distant pour la dernière de bons commettre, 4a3ba7b0e56cf0be80274c1f879029220a889bde
et (si possible) de détruire les mauvaises commettre d004651972cbc35f70ee5a2145b6e03169c77279
.
J'ai essayé:
git checkout 4a3ba7
git push -f
et a obtenu: fatal: You are not currently on a branch.
OriginalL'auteur Jesse Hallam | 2013-02-18
Vous devez vous connecter pour publier un commentaire.
checkout
se déplace à votre répertoire de travail en cours pour une livraison antérieure, mais il ne modifie pas le contenu de la branche. Vous devez réinitialiser le branche à un ancien commit, puis appuyez sur.cela dit, si vous êtes déjà
push -f
ing changer seulement la plus récente commit, vous devriez être en mesure d'utiliser--amend
.Si il y a au moins certains des changements que vous voulez qui ont été commis après
4a3ba7
alors vous pouvez aussi le faire:Mise à jour
Votre erreur
remote: error: denying non-fast-forward refs/heads/master
est parce que le serveur git que vous utilisez, Assembla, ne permettent pas de réécriture de l'histoire par défaut. Voir cette réponse pour la fixation de la partie: Annuler la commande git push d'Assemblaerror: failed to push some refs to
... "Mises à jour ont été rejetées parce que la pointe de votre branche courante est derrière est l'homologue distant.Les commandes qui ne vous exécutez? Avez-vous d'autres branches dans le repo? Tant que vous avez la
-f
là, je ne m'attends pas que.Seule branche est maître de la télécommande et le local. Je ne exécuté le premier codeblock dans votre réponse: checkout master, reset --hard 4a3ba7, push-f. Je suis actuellement à la suite retour sur la sortie standard: pastebin.com/ZKR6gF7n
Qu'est-ce que le serveur vous sont en train de pousser? Il semble que le serveur est configuré pour ne pas autoriser la réécriture de l'histoire. Si cela est vrai, alors vous pouvez simplement faire un nouveau commit qui résout le conflit de fusion, plutôt que d'essayer de revenir en arrière et supprimer complètement de l'histoire.
Je suis poussant à l'assembla.com. Si je ne peux pas détruire le mauvais commit, puis-je réécrire son message de validation afin de mieux refléter le fait que ses mauvaises nouvelles? Et comment aurais-je obtenir mon repo local dans un état où il correspond à
4a3
et je peux commettre?OriginalL'auteur loganfsmyth
Vous n'avez pas besoin de la caisse des choses localement pour rembobiner une branche distante; vous pouvez simplement utiliser
Double vérifier vos journaux avant de faire quoi que ce soit, que ce push sera écraser des données à distance.
Si vous recevez des erreurs de permission,
receive.denyNonFastForwards
peut-être configuré pourtrue
dans le dépôt distant; vous devez le changer pour un retour au travail dans tous les cas.OriginalL'auteur Marco Leogrande
Vous pouvez faire un
mais attention: Cela peut entraîner une perte de données modifiées! (Vous êtes prévenus :))
error: failed to push some refs to
... "Mises à jour ont été rejetées parce que la pointe de votre branche courante est derrière est l'homologue distant.OriginalL'auteur bssstudio