Un autre développeur et moi-même avions fusionné et poussé notre travail vers une twig non maîtresse appelée toolwork. De cette façon, nous n’avons pas eu d’impact sur le rest de l’équipe. Ma twig de sujet s’appelait DPM-93 et mon stream de travail était celui-ci.
# do some work git checkout DPM-93 git commit -m "did some work" # catch up git checkout toolwork git pull origin toolwork # rebase my topic branch git checkout DPM-93 git rebase toolwork # merge and push my changes git checkout toolwork git merge --no-ff DPM-93 git push origin toolwork
Cela fonctionnait très bien jusqu’à ce que j’ai accidentellement émis ces commandes git
git checkout toolwork git pull origin master
À ce moment-là, un tas de nouvelles choses sont apparues dans les outils de twig et je ne suis pas sûr de savoir comment le supprimer sans supprimer mon espace de travail et le re-clonage à partir du repository.
Y a-t-il un moyen de remettre cela à l’état avant le tirage?
git reset --hard ORIG_HEAD
À partir de la page de manuel de git reset
(si vous venez de faire le pull):
Annuler une fusion ou tirer
$ git pull (1) Auto-merging nitfol CONFLICT (content): Merge conflict in nitfol Automatic merge failed; fix conflicts and then commit the result. $ git reset --hard (2) $ git pull . topic/branch (3) Updating from 41223... to 13134... Fast-forward $ git reset --hard ORIG_HEAD (4)
- Essayer de mettre à jour en amont a provoqué beaucoup de conflits; vous n’étiez pas prêt à passer beaucoup de temps à fusionner maintenant, alors vous décidez de le faire plus tard.
- ”
pull
” n’a pas fait de commit de fusion, donc ”git reset --hard
” qui est synonyme de ”git reset --hard HEAD
” efface le désordre du fichier d’index et de l’arborescence de travail.- Fusionnez une twig de rubrique dans la twig en cours, ce qui a entraîné une accélération.
- Mais vous avez décidé que la twig thématique n’est pas encore prête pour la consommation publique.
“pull” ou “merge” laisse toujours la pointe d’origine de la twig actuelle dansORIG_HEAD
, donc la réinitialisationORIG_HEAD
ramène votre fichier d’index et l’arborescence de travail à cet état et réinitialise la pointe de la twig à cette validation.
Voir HEAD
et ORIG_HEAD
pour plus d’informations.
Réinitialiser la twig principale:
git reset --hard origin/master
Vous pouvez utiliser git log
pour trouver le SHA-1 de la révision que vous souhaitez toolwork
tête de votre twig d’ toolwork
, puis utiliser git reset --hard
pour rétablir votre copie de travail dans cette révision.
Tout sauvegarder en premier! Et relisez la page de manuel pour git reset
pour vous assurer qu’elle fait ce que vous voulez.
EDIT: Oh oui, ORIG_HEAD devrait contenir le droit SHA-1. Mais vérifiez d’abord.
J’ai fait récemment une chose similaire et j’ai utilisé une solution plus simple basée sur cette réponse .
En supposant que l’état de la twig d’ toolwork
laquelle vous voulez revenir a été poussé à l’ origin
, vous pouvez simplement faire
git fetch origin git reset --hard origin/toolwork
Dans mon cas, la valeur de ORIG_HEAD
avait été écrasée par une autre fusion sur une twig différente et, ce faisant, je n’avais pas à me soucier de la recherche de la validation correcte dans le journal.
Ce qui a fonctionné pour moi est simplement
git reset --hard
Je l’ai fait depuis le repository local avec la fusion / extraction malheureuse:
Laptop@LAPTOP-xxxxxxxx /d/Google Drive/xxxxxxx/Github/xxxxx (staging_ec2|MERGING) $ git reset --hard HEAD is now at 2d5a511 [last commit comment] Laptop@LAPTOP-xxxxxxxx /d/Google Drive/xxxxxxx/Github/xxxxx (staging_ec2) $