Move commet de master sur une twig en utilisant git

J’essaie d’apprendre comment utiliser efficacement Git et je me demande comment je devrais (bonne pratique / mauvaise pratique?) Résoudre le cas suivant:

Disons que j’ai la chaîne de commits suivante dans master:

  • Commit initial
  • Commit 1
  • Commit 2
  • Commit 3

Ensuite, je me rends compte que ce qui est fait dans les deux derniers commits est complètement faux et que je dois recommencer à partir de Commit 1. Des questions:

  • Comment devrais-je faire ça?
  • Puis-je déplacer les commandes 2 et 3 vers une twig distincte pour les consulter ultérieurement (dites-leur qu’elles n’étaient pas si mauvaises après tout) et continuer à travailler à partir de Commit 1 sur master?

git branch tmp # mark the current commit with a tmp branch git reset --hard Commit1 # revert to Commit1 

La réponse de SO ” Quelle est la différence entre” git reset “et” git checkout “dans git? ” Est très instructif pour ce type d’opération

texte alt

Un git reset --hard HEAD~2 ferait la même chose (sans avoir à récupérer le SHA1 pour Commit1 premier).

Puisque Commit2 et Commit3 sont toujours la référence par une référence Git (ici une twig), vous pouvez toujours y revenir quand vous le voulez ( git checkout tmp ).


En fait, Darien mentionne dans les commentaires (concernant le déplacement de Commit2 et Commit3 vers une autre twig):

Accidentellement commis dans la mauvaise twig, cela m’a permis de le déplacer, a fait:

 git checkout correctbranch git rebase tmp git branch -d tmp 

Cela fonctionne ici puisque la twig initiale a été réinitialisée à Commit1 , ce qui signifie que git rebase tmp rejouera chaque commit après Commit1 (donc ici Commit2 et Commit3 ) vers la nouvelle ‘ correctbranch ‘.