2015-09-24 1 views
0

J'ai une situation où j'ai accidentellement poussé un commit incomplet C1 à la branche distante. Maintenant, je veux revenir à la branche distante, mais temporairement, de sorte que je peux encore travailler sur le commit C1 localement et modifier d'autres modifications.Git revenir temporairement

Je l'ai fait,

git revert C1 

qui a créé une validation avec les changements undo et je poussé à la branche à distance comme un autre commettras C2. Terminé.

Mais comment puis-je commencer à travailler sur la validation C1 qui est annulée? devrais-je vérifier ce commit spécifique C1? Si je le fais, git status montre en-tête détaché dans mon repo local.

+1

Pourquoi ne pas simplement rétablir le commit sur la branche distante, terminer vos modifications localement, le valider + pousser le tout? Une fois qu'une validation est faite, elle ne peut pas vraiment être changée; un commit modifié est en fait un rebase, qui crée de nouveaux commits avec différents hashes que les commits de pré-modification. –

+0

Merci, je suis allé avec la réponse @ Charles Durham. ce qui est assez similaire à votre approche. – Kevindra

Répondre

1

Vous pouvez créer une nouvelle branche sur C1, puis travailler à partir de là. Ensuite, lorsque vous avez terminé avec vos ajouts à C1 le fusionner dans votre branche par défaut.

git checkout C1 & git checkout -b newC1BranchName

+0

Merci cela fonctionne! La chose qui me manquait était qu'il n'y avait pas de branche locale pour cet en-tête détaché. mais cela résout ce problème :) – Kevindra

-1

Si vous appuyez sur une validation incomplète et se rendre compte immédiatement, je pense qu'il est correct de réinitialiser et pousser la force, comme:

$ git reset HEAD^ 
$ git push -f 

Cela supprimera que commettras (localement et à distance), tout en gardant vos fichiers locaux inchangés.

Cependant, revenir C2 pourrait être une solution plus sûre, mais dans ce cas particulier, je pense que c'est tout simplement inutile.