2011-05-21 2 views
0

Je veux que mon repo git soit à l'état où il était à un commit spécifique. Une fois que le repo est à l'état, je veux pouvoir pousser sur Github, faisant en sorte que la télécommande soit dans cet état. Je sais que je peux appeler git checkout <commit hash> et mon repo local sera à l'état où il était au moment donné, mais il ne vous laissera pas pousser.Est-ce possible avec Git?

Je devine que je devrais faire quelque chose avec git checkout mais je ne sais pas quoi faire.

Merci pour toute aide sur cette question simple :)

Répondre

2

Utilisez git reset --hard <commit> pour réinitialiser le repo à un commit particulier.

Cela vous fera perdre vos modifications de répertoire de travail et tout commit après le commit. Vous pouvez toujours récupérer les nouveaux validations à partir de git reflog puis en utilisant git reset sur ces validations. De plus, si vous aviez déjà poussé les autres commits, vous devez éviter de pousser la télécommande sans eux.

3

Vous devez pousser avec force puisque vous allez perdre l'histoire.

git push -f origin master 

Ceci forcera vos changements avec force. Si vous essayez d'annuler quelque chose, vous pouvez considérer git revert car cela vous permettra de conserver l'historique.

+0

OK merci. J'ai décidé contre "git revert" parce que c'est une grande différence de temps entre le commit actuel et le commit que je veux. – icnhzabot

+1

Pourquoi? Les invertis sont réversibles. Perdre l'histoire n'est pas. – vcsjones

+0

Je pense que 'git revert' est la bonne façon d'y aller, mais l'OP devra inverser chaque commit individuel entre HEAD et le commit cible, non? À moins qu'il y ait une autre façon de le faire directement avec une seule commande git. – Jeet