git merge: appliquer les modifications au code déplacé dans un autre fichier

Je cherche un assez costaud git merge manœuvre de la droite maintenant. Un problème que je suis à venir à travers, c'est que j'ai apporté quelques modifications à certains de code dans ma branche, mais mon collègue a déplacé ce code dans un nouveau fichier dans sa direction. Alors, quand je n'ai git merge my_branch his_branch, git n'a pas remarqué que le code dans le nouveau fichier est le même que l'ancien, et donc aucun de mes modifications sont là.

Quelle est la meilleure façon d'aller sur l'application de mes changements de nouveau le code dans les nouveaux fichiers. Je ne vais pas avoir trop de problèmes à trouver qui commet doivent être renouvelés (je peux utiliser git log --stat). Mais autant que je sache, il n'est aucun moyen d'obtenir git pour réappliquer les modifications dans les nouveaux fichiers. La meilleure chose que je vois est de faire manuellement réappliquer les modifications, ce qui n'est pas à la recherche comme une bonne idée.

Je sais que git reconnaît les gouttes, pas les fichiers, donc il doit sûrement y avoir un moyen de lui dire, "d'appliquer ce code exact du changement à partir de ce commit, sauf de ne pas où il était mais où il est maintenant dans ce nouveau fichier".

  • Pas exactement le même, mais ici, c'est une question similaire, avec une bonne anwsers qui pourraient s'appliquer: stackoverflow.com/questions/2701790/...
  • Aucune des réponses pour tenter d'expliquer pourquoi git n'est pas en mesure d'effectuer des fusions comme cela automatiquement. Je pensais que c'était censé être assez intelligent pour détecter renomme et effectuer la fusion automatiquement?
  • Peut-être que ce n'était pas vrai, lorsque la question a été posée, mais les versions modernes de git (je suis en utilisant 1.9.5) peut fusionner des modifications à l'ensemble de renommé et déplacé des fichiers. Il y a même un --rename-threshold option pour ajuster le degré de similarité qui est nécessaire.
  • qui ne fonctionnera que si vous le faites à la vanille, rebase de l'amont de la branche, mais vous devez toujours exécuter des ennuis si vous êtes la cueillette de cerises ou de retour-le transfert d'une série de changements qui peuvent ne pas inclure le commit qui renomme les fichiers.
InformationsquelleAutor asmeurer | 2010-08-16