Avec SVN, il est facile de procéder à une fusion inversée d'un commit, mais comment faire cela avec Git?
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) .
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
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
git reset --hard HEAD^
Utilisez la commande ci-dessus pour annuler les modifications de fusion.