Voulez-vous changer mon master en un ancien commit, comment puis-je le faire?

Je veux revenir à une validation précédente, puis publier ce code, puis revenir à la dernière validation.

c’est-à-dire que mon maître pointe vers une version de validation plus ancienne pour que je puisse reproduire cette version, alors je veux revenir au dernier commit dont j’en étais un au départ.

Comment puis-je faire ceci?

Si vous voulez faire cela et rétablir le master pour le commit précédent:

git checkout master~1 # Checkout previous commit on master git checkout -b new_master # Create branch for new master git branch -D master # Delete old master git branch -mv new_master master # Make new_master master 

Alternativement:

 git reset --hard master~1 # Reset current branch to one commit ago on master 

Votre question n’est pas claire. Je pense que ce que vous demandez, c’est ceci:

 git push -f origin $old_commit_id :master 

Qu’est-ce que ça va faire? Il poussera le $old_commit_id à l’ origin tant que nouvelle twig principale du chef d’ origin .

Si c’est ce que vous vouliez, vous n’avez pas besoin de toucher votre twig master locale.

utiliser git reset --hard

cela réinitialisera HEAD à cet ancien commit.

De plus, vous devez également utiliser l’origine git push -f origin pour modifier le repo distant.

Vous pouvez simplement git checkout , faire ce que vous devez faire, puis lancer un git checkout master pour revenir au nouveau code.

Si vous devez modifier l’ancien code pour le libérer, vous devriez probablement:

 git checkout -b my_release  ... prepare code for release ... ... release code ... git checkout master git merge my_release 

En outre, je ne peux pas recommander git flow suffisamment. Cela rend tout cela assez facile.

En supposant un graphe de validation comme celui-ci:

 | (A) ---------> (B) ----------> (C) | ^ | (master) 

Vous voulez d’abord passer la commande master et créer une twig qui indique où se trouve actuellement le master :

 git checkout master git branch pointer master 

Devrait ressembler à ceci maintenant:

 | (A) ---------> (B) ----------> (C) | ^ | (HEAD, master, pointer) 

Maintenant que vous êtes déjà sur master , nous allons demander à la twig master de reculer d’un commit:

 git reset master~1 

Maintenant, master doit être reculé d’un espace, mais la twig de pointer est toujours sur le dernier commit:

 | (A) ---------> (B) ----------> (C) | ^ ^ | (HEAD, master) (pointer) 

À ce stade, vous pouvez transférer le master vers une télécommande ou, le cas échéant, effectuer une fusion rapide vers la twig du pointer . Vous pouvez tuer la twig de pointer à cet endroit:

 git push origin master git merge --ff-only pointer git branch -D pointer 

Finale:

 | (A) ---------> (B) ----------> (C) | ^ ^ | [ origin/master ] (HEAD, master) 

Pour passer à une version précédente:

git checkout

faites votre travail ici et engagez-le avec

git commit --amend

Revenir à la maîsortingse :

git checkout master