Annuler un git pull
Les questions que j'ai vu pour l'annulation d'un git pull légèrement différente de la mienne.
C'est ce que j'ai fait:
Il y a un projet dans le répertoire A
(pas un repo). J'ai initialisé un dépôt dans le, y ont ajouté les fichiers, mais n'a pas commis quoi que ce soit. Alors j'ai sorti de référentiel de B, qui a remplacé un tas de mes mises en scène de fichiers.
J'étais sous l'impression que je pourrais utiliser git reset --hard
pour annuler la fusion. Bien sûr que viens de vérifier la TÊTE de la commet, j'avais juste tiré dans.
Je devrais avoir ramifiée et commis quelque chose avant que je ne ce pull, le recul est de nice. Est-il possible que je peux obtenir mes anciens unstaged fichiers?
- Une chose qui pourrait vous faire gagner un peu de chagrin dans l'avenir est
git reset --merge
. Les fichiers qui n'ont pas été affectés par la fusion de rester seul, et depuis git refuse de fusionner, si vous avez des modifications à des fichiers de la fusion sera tactile, il couvre vos bases assez bien! - Aussi, avez un pull vraiment remplacer mise en scène de fichiers? Qui n'a pas de sens pour moi. Comme je l'ai dit dans le commentaire précédent, git va refuser de fusion dans de tels cas. C'était peut-être le
reset --hard
qui a soufflé à l'écart? - Oui je pense que c'était le
reset --hard
. C'est un peu commerm -rf
, dangereux dans de mauvaises mains. - double possible de Récupération de fichier après avoir fait un git reset --hard HEAD^
Vous devez vous connecter pour publier un commentaire.
Il semble qu'il n'y est une réponse à la récupération des mises en scène des fichiers ici:
Récupération de fichier après avoir fait un git reset --hard HEAD^
Un
git pull
est le même quegit fetch
+git merge
. C'est l'étape de fusion et publipostage qui a remplacé vos modifications. Pour revenir à l'état avant la fusion, l'utilisationgit log
pour trouver votre dernier commit, puis utilisergit reset --hard 1234abcd
où 1234abcd est le hachage de l'souhaité s'engager.Noter qu'après la réinitialisation
git pull
de la fusion des changements de nouveau. Pour annuler les modifications pour de bon, l'utilisationgit revert
qui permettra de créer un supplémentaire de s'engager à inverser les modifications.ORIG_HEAD
est l'état deHEAD
, avant une fusion ou d'autres commandes qui peuvent être dangereux. Malheureusement, il ne va pas aider ici, comme d'autres commentateurs ont noté.git reset --hard
écrase mise en scène changements (donc negit reset
, mais pasgit reset --soft
). Si le changement n'a pas été commis, il n'a pas été enregistré.merge
n'a pas de travail sur les référentiels avec les modifications non validées. Comme pour les données, je pense que la mise en scène, les fichiers sont enregistrés dans le git de la banque de données interne, de sorte qu'il peut être encore possible de creuser les sortir de là.Soit juste réinitialiser le précédent CHEF (c'est à dire la validation que vous aviez dans votre référentiel, qui n'a pas été mis à jour à partir de la télécommande), ou de l'utilisation
git reflog
. Ce dernier affiche une liste des actions qui ont été faites dans votre référentiel, lagit pull
commande doit être partie prenante. Simplementgit reset --hard X
à un état avant cette commande.Ou tout simplement de la branche hors de la précédente TÊTE (vous pouvez supprimer/remplacer la précédente direction de), faire vos changements et git pull à nouveau...
Je pense que vous ne pouvez pas complète récupérer maintenant. Le meilleur que vous pouvez faire est de
git status
pour vérifier les fichier(s) sont encore intacts. Si le non validées fichiers ne sont pas ici, ils sont perdus.La prochaine fois, pensez à utiliser
git stash
avantgit pull
, ou, mieux encore, utilisezgit fetch
.SI VOUS ÊTES UNE AVANCÉE UTILISATEURS DE GIT, ET LES FICHIERS SONT VRAIMENT IMPORTANT:
Si les fichiers sont mis en scène, vous pourriez être en mesure de les extraire de l'objet référentiel. Mais ils vont droit dans le dépôt git tripes, que je ne pense pas que vous devriez essayer.
Si vous voulez vraiment lire ces:
git-fetch
et puisgit-merge
. A très bien fonctionné.Mise à jour le 17 janvier 2011, 6:53 PM
Il vous suffit de relire votre question. J'ai oublié que vous étiez en le tirant de projet b contre la copie des fichiers dans votre projet. Vous ne savez pas si ma réponse tient toujours compte tenu de votre scénario. Je pense que votre meilleur pari est de suivre geoffreyd réponse et de validation de la réponse à la StackOverflow question Récupération de fichier après avoir fait un git reset --hard HEAD^.
Réponse Originale À Cette Question
Il suffit de faire une
git checkout -- <file>
.Voici l'exemple que j'ai couru pour confirmer ci-dessus...
Lorsque vous effectuez
git status
il vous dit d'utilisergit checkout -- <file>
pour annuler les modifications dans le répertoire de travail. Si je suis en train de lire votre question correctement, c'est ce que vous voulez faire.