2010-02-06 28 views
35

Hey je suis nouveau à git et je dois annuler une traction, quelqu'un peut-il aider?!? Donc ce que je l'ai fait est ...Annuler un git pull --rebase

  1. git commit
  2. git stash
  3. git traction --rebase
  4. planque git pop

cela a créé un tas de conflits et est allé un peu mal. Maintenant, faire 'git stash list' révèle que ma cachette est toujours là. Est-il possible de revenir à mon repo juste après avoir fait le commit git. Donc, effectivement, mon repo ne contient que des changements que j'ai faits et rien de nouveau sur le serveur?

Répondre

37

utilisant git reflog vous verrez une liste de HEAD commits fait dans le passé

utilisant

git checkout -b after-commit [email protected]{1} # or the commit you want to recover 

vous créez une nouvelle branche à cette position précise et le vérifier

+0

envoie une erreur m'informant qu'un fichier sera remplacé par fusion. Y at-il un moyen d'ignorer cela? – Thomas

+4

Assurez-vous que votre répertoire de travail est propre (git reset --hard HEAD fera cela). Assurez-vous également que le rebasage n'est plus en cours (git rebase --abort). –

+0

Vous mon ami êtes un épargnant de vie! Merci :) – Thomas

-1

Utilisez git log -g et trouver la validation index que vous souhaitez revenir à la juste faire git checkout index

+0

Cela n'aide pas vraiment, car 'pull --rebase' rejoue vos commits en plus de ce que vous venez de tirer; dans ce cas, vous ne pouvez pas simplement récupérer votre ancien commit, car c'est en plus des commits que vous venez de tirer. –

71

en fait, pour faire th est plus facile Git conserve une référence nommée ORIG_HEAD qui pointe là où vous étiez avant la rebase. Ainsi, il est aussi simple que:

git reset --hard ORIG_HEAD 
+4

J'ai presque perdu une semaine de travail, mais cela l'a ressuscité. C'est ce qui arrive quand quelqu'un d'autre rebase votre branche et force les pousses à l'origine sans tirer vos changements d'abord ... Il est certainement important de savoir si vous travaillez sur un projet avec d'autres où ils forcent tout le monde à rebaser au lieu de fusionner. Visser un historique plus propre, rebaser est dangereux. – Gavin

4

Vous devriez checkout la commande

git reset --merge 

qui élimine la nécessité d'un engagement git; git stash avant un pull (ne sait pas à propos de rebase cependant)

La commande renvoie un espace de travail avec des modifications non validées de l'état avant un tirage en conflit.