Pour fusionner uniquement les changements de la branche 2 file.py
pour que les autres changements disparaissent.
git checkout -B wip branch2
git read-tree branch1
git checkout branch2 file.py
git commit -m'merging only file.py history from branch2 into branch1'
git checkout branch1
git merge wip
La fusion ne regardera même pas les autres fichiers. Vous pouvez avoir besoin de '-f' les vérifications si les arbres sont assez différents.
Notez que cela laissera la branche 1 comme si tout ce qui se trouvait dans l'historique de la branche 2 jusqu'à ce point avait été fusionné, ce qui peut ne pas être ce que vous voulez. Une meilleure version du premier checkout ci-dessus est probablement
git checkout -B wip `git merge-base branch1 branch2`
dans ce cas, le message de validation devrait probablement aussi être
git commit -m"merging only $(git rev-parse branch2):file.py into branch1"