web-dev-qa-db-fra.com

Git: comment annuler la fusion d'un commit?

Avec SVN, il est facile de procéder à une fusion inversée d'un commit, mais comment faire cela avec Git?

114
Mot

Pour créer un nouveau commit qui "annule" les modifications d'un commit précédent, utilisez:

$ git revert <commit>

Il est également possible de supprimer une validation d'un point arbitraire dans le passé en rebasant puis en réinitialisant, mais vous ne voulez vraiment pas le faire si vous avez déjà transféré vos validations vers un autre référentiel (ou si quelqu'un d'autre l'a extraite) .

104
Ben James

Pour annuler un commit merge , vous devez utiliser: git revert -m <parent number>. Ainsi, par exemple, pour rétablir la validation la plus récente de fusion à l'aide du parent portant le numéro 1, utilisez:

git revert -m 1 HEAD

Pour annuler un commit de fusion avant le dernier commit, vous feriez:

git revert -m 1 HEAD^

Utilisation git show <merge commit SHA1> pour voir les parents, la numérotation correspond à l'ordre dans lequel ils apparaissent, par exemple. Merge: e4c54b3 4725ad2

documentation sur la fusion de git: http://schacon.github.com/git/git-merge.html

discussion sur la fusion de git (déroutante mais très détaillée): http://schacon.github.com/git/howto/revert-a-faulty-merge.txt

113
Marcus Ericsson

Si je vous comprends bien, vous parlez de faire un

svn merge -rn:n-1

pour revenir sur un commit précédent, auquel cas vous êtes probablement à la recherche de

git revert
4
Rudedog
git reset --hard HEAD^ 

Utilisez la commande ci-dessus pour annuler les modifications de fusion.

1
kapil chakravarthy