12
votes

Ne peut pas pousser après la réinitialisation de git - head tête ^

juste maintenant je vous ai commis et poussé quelque chose ( oui, ma erreur sur la poussée ) que j'ai décidé que je devrais "revenir" ou "annuler" ou "annuler". Donc, on m'a dit d'émettre git réinitialiser --Soft tête ^ à ma fin, et j'ai pensé que cela créerait une commission «revenir» qui sera autrefois commise le ferait comme si le changement ne se produisait jamais. Cela ne me dérange pas si l'histoire du changement est là du tout, c'est ce que j'imaginé serait arrivé.

Quoi qu'il en soit, après avoir fait que je me suis engagé à nouveau, puis quand j'ai essayé de pousser, j'ai eu l'erreur non rapide. Maintenant, je sais que j'ai vissé quelque chose avec la réinitialisation, quelque chose du long des lignes de mon arbre et de mon arbre d'origine est «incompatible» maintenant, mais je me demande comment résoudre ce problème. Maintenant, je veux juste revenir à l'heure avant d'avoir publié la réinitialisation, de sorte que je puisse simplement revenir manuellement les changements en les prenant manuellement puis commettant, à moins que quelqu'un d'autre ne puisse recommander la bonne façon de revenir à une commission poussée, et par Cela ne signifie pas que l'histoire doit être passée du journal ou de quoi que ce soit.


0 commentaires

4 Réponses :


8
votes

Si je comprends votre problème correctement, vous pouvez essayer ce qui suit:

(Je suppose que ceci est votre branche «maître» et que vous appuyez sur «Origine») P>

Synchrony avec votre Remote à atteindre le même état. P>

git push


0 commentaires

0
votes

Vous vouliez utiliser git revert tête pour créer un nouveau commit qui annulerait le commit à la tête. Au lieu de cela, vous venez de vous déplacer vers la tête avant la tête actuelle.


1 commentaires

Merci, cela a du sens, bien que cela aurait probablement été meilleur comme un commentaire étant donné que cela ne résout pas vraiment mon problème. Merci quand même.



5
votes

Maintenant, je veux juste revenir à l'heure avant d'avoir publié la réinitialisation p>

Si vous voulez seulement annuler le GIT RESET --SOFT CODE> Vous venez de le faire, vous pouvez rechercher l'ancien identifiant de validation de la tête dans le reflocation P>

 $ git reflog
 $ git reset --soft formerCommit


4 commentaires

Merci, cela ressemble à ce que quelqu'un sur IRC m'a dit de faire, mais c'est assez déroutant, alors je vais aller avec la réponse de Rnicholson à des fins de documentation.


Je n'étais pas familier avec Git Reflog. Très cool. Appris quelque chose de nouveau. Ceci est probablement une meilleure solution car elle condense les 3 premières étapes de ma réponse à une commande.


Je ne pouvais pas non plus dire que cela fonctionne, comment cela fonctionne, je pensais qu'après $ GIT RESET --SOFT FIERCOMMIT Je retournerai à l'état précédent, la tête pointe vers la commission précédente, mais alors quand je Treed à pousser de nouveaux changements, je reçois la même erreur que dans la question que les têtes ont divergée, donc je ne suis pas de ongleDn quel est l'avantage de cela?


@Arpanbanererjee Toute réinitialisation qui déplace la tête entraînerait une force de force.



9
votes

Bien que ma réponse soit au-delà de ce que vous demandez, je pense que c'est en fait ce que vous avez l'intention de faire.

vous avez utilisé git reset --Soft tête ^ code> pour annuler la commission que vous avez faite . Cela renvoie la copie de travail à l'état avant votre commis (puisque tête code> sur votre commit actuel, et tête ^ code> pointe sur celui avant (en supposant qu'il n'y a qu'un seul parent ). p>

mais maintenant lorsque vous GIT PUSH CODE> On vous dit quelque chose comme: P>

*Friday*

git add --all  # To add all files whether they are tracked or not
git commit -m "Friday afternoon commit"
git --set-upstream push      # --set-upstream is for if the branch doesn't exist on the remote server

*Monday*

git reset --soft HEAD^
git push -f --set-upstream origin <branch>


0 commentaires