2013-03-16 2 views
1

Je crée un fichier foo dans le dépôt git sur la branche master. Puis, je crée une nouvelle branche dev, en utilisant git checkout -b dev.Comment fusionner les deux fichiers différents après que le fichier a été renommé

Sur la branche dev, je la renommer en bar en utilisant git mv foo bar. Ensuite, je change quelque chose dans le foo et le commet.

Mais, quand je branche extrais par checkout dev et git merge master, git ne fusionne pas automatiquement pour moi et me demande de fusionner moi-même.

Donc, est foo l'ancêtre de bar après que j'exécute git mv? Y at-il un moyen de laisser git fusionner automatiquement?

+0

'foo' n'est pas un ancêtre de' bar' car git ne suit pas les renames, il suit uniquement le contenu des fichiers. – wRAR

+0

Merci. Je vais essayer '' '' hg''', car il prend en charge le renommage des pistes. @wRAR – rAy

+0

@wrar Il ne peut pas suivre les renames mais 'git-merge-recursive' va certainement les détecter par similarité avec l'ancêtre. –

Répondre

1

Comme mentionné dans "git merge with renamed files", vous devriez essayer d'adapter le seuil de changement de nom:

Depuis git 1.7.4, vous pouvez spécifier le seuil de changement de nom pour la fusion comme

afin de contrôler qu'une similarité de 25% est déjà suffisante pour considérer deux fichiers renommer les candidats. Cela peut, selon le cas, avec -X ignore-space-change rendre plus fiable la détection de renommer.

encore de Tilman Vogel, le script git-merge-associate peut aider à restaurer l'association entre deux fichiers (l'une étant la version renommée de l'autre), lorsque la fusion ne détecte pas le changement de nom.

Questions connexes