J'essaie d'apprendre à utiliser Git efficacement et je me demande comment je devrais (bonne pratique/mauvaise pratique?) Résoudre le cas suivant:
Disons que j'ai la chaîne de validations suivante dans master:
Ensuite, je me rends compte que ce qui a été fait lors des deux dernières validations est complètement faux et je dois recommencer à partir de la validation 1. Des questions:
git branch tmp # mark the current commit with a tmp branch
git reset --hard Commit1 # revert to Commit1
Le SO answer " Quelle est la différence entre 'git reset' et 'git checkout' dans git? " est assez instructif pour ce type d'opération
A git reset --hard HEAD~2
ferait la même chose (sans avoir à récupérer le SHA1 pour Commit1
première).
Puisque Commit2
et Commit3
sont toujours référencés par une référence Git (ici une branche), vous pouvez toujours y revenir à tout moment (git checkout tmp
).
En fait, Darien mentionne dans les commentaires (concernant le déplacement Commit2
et Commit3
vers une autre branche):
Engagé accidentellement dans la mauvaise branche, cela m'a permis de le déplacer:
git checkout correctbranch
git rebase tmp
git branch -d tmp
Cela fonctionne ici puisque la branche initiale a été réinitialisée sur Commit1
, ce qui signifie que le git rebase tmp
rejouera chaque commit après Commit1
(alors ici Commit2
et Commit3
) au nouveau 'correctbranch
'.