2016-09-14 1 views
1

Quelqu'un a poussé la ligne suivante à notre référentiel:Annuler partie d'une seule ligne de commettras spécifique, après git push

git = ['a', 'w', 'e', 's', 'o', 'm', 'e', BugSyntaxErrorBug] 

Mais il devrait en fait être:

git = ['a', 'w', 'e', 's', 'o', 'm', 'e'] 

Depuis que beaucoup de poussées ont été fait, et je veux le réécrire à partir de cette poussée spécifique. L'idée derrière cela est que si quelqu'un tire une ancienne version de ce code, le code fonctionnera.

Merci :)

+0

Si vous souhaitez simplement annuler ce petit changement, pouvez-vous le faire manuellement, le valider et le pousser? Ou voulez-vous réinitialiser l'ensemble du repo avant cette validation? –

+1

C'est certainement possible. Avez-vous lu la section [Histoire de la réécriture] (https://git-scm.com/book/fr/v2/Git-Tools-Rewriting-History) du livre Git? C'est probablement l'endroit pour commencer. – larsks

Répondre

2

Voilà comment je le ferais.

identifiez-les pour pouvoir les restaurer en cas de problème.

git tag MyOldCommit BADCOMMIT 
git tag MyOldMaster master 

si vous avez besoin vous pouvez récupérer maître inchangée avec

git branch -f master MyOldMaster 

Passer à la caisse de la mauvaise commettras à une nouvelle branche

git checkout -b MyFixedCommit BADCOMMIT 

après le retrait des octets offensants, remplacer l'ancien commmit avec un nouveau.

git commit --amend -m"my commit message" 

revenir à votre ancienne branche principale branche

git checkout master 

maître rebasage (et seul maître !!!) sur MyFixedCommit

git rebase --onto MyFixedCommit BADCOMMIT master 

git re-play (validation COMMIT) les changements de BADCOMMIT à l'extrémité du maître sur MyfixedCommit. Vous devrez résoudre tous les conflits que Git trouve sur le chemin.

!! Puisque vous réécrivez l'historique, la chaîne de validation du maître sera maintenant différente des balises et des branches d'autres utilisateurs qui ont référencé l'ancienne chaîne de validation principale !!