J'ai un graphique de livraison qui ressemble à celui ci-dessous. Les commits marqués avec *
représentent beaucoup de commits.
A*
|
B---------
| |
C* D* <- old feature branch
| |
E---------
|
F*
|
G <- master
Le commit de fusion E a été fait de manière incorrecte et certains changements (pas tous) dans C* ont été perdus. Comment puis-je refaire cette fusion pour réintroduire les changements dans le master actuel ?
Tout a déjà été poussé (projet open source), donc changer l'histoire n'est pas une option.
J'ai essayé de créer un patch à partir des commits C* et de l'appliquer au master, mais parce que un peu de des changements de C* ont été fusionnés correctement et parce que le projet a évolué depuis ce commit, environ 80% du patch échoue.
Idéalement, nous devrions prendre toutes les modifications dans C*, les appliquer à master et résoudre tous les conflits. Mais comme les branches ont déjà été fusionnées, git ne détecte aucun changement et ne permet pas de fusionner à nouveau.
$ git checkout 5bc5295 # C
HEAD is now at 5bc5295... cleanup
$ git checkout -b "missing-commits"
Switched to a new branch 'missing-commits'
$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
$ git merge missing-commits
Already up-to-date.