2010-03-23 3 views
12

Disons que je fais une rebase B d'une branche sur master et qu'il y a un conflit. git ouvre l'outil de fusion par défaut avec 3 fichiers en entrée: fichier.LOCAL, fichier.BASE, fichier.REMOTE (ils sont nommés un peu différemment, mais LOCAL, BASE et REMOTE sont dans les noms de fichiers et comment ils sont distingués).Puis-je renommer LOCAL, REMOTE et BASE comme dans git mergetool?

Maintenant, selon la page de manuel mergetool: $ LOCAL est défini sur le nom d'un fichier temporaire contenant le contenu du fichier sur la branche actuelle; $ REMOTE défini sur le nom d'un fichier temporaire contenant le contenu du fichier à fusionner, et $ BASE défini sur le nom d'un fichier temporaire contenant la base commune pour la fusion.

Cela n'a vraiment aucun sens pour moi. LOCAL est l'état actuel de la branche. Où je me perds est BASE et REMOTE. Donc ma question est:

Est-il possible de faire git utiliser le nom de la branche au lieu de LOCAL et des noms plus significatifs autres que BASE et REMOTE? Par exemple, si le nom de la branche est FeatureX et BASE = le fichier tel qu'il existe dans master, existe-t-il un moyen de substituer FeatureX pour LOCAL et master pour BASE par git, de sorte qu'il est plus apparent d'où provient la source ? Ceci est particulièrement un problème lors d'un rebasage.

Répondre

8

Est-il possible de faire git utiliser le nom de la branche au lieu de LOCAL

Je ne pense pas, mais si vous déclarez dans votre mergetool a graphical merge tool, vous pouvez appeler cet outil externe avec le titre de votre choix:

(extrait d'un script d'outil de fusion calll)

t1="'$4 (current branch)'" 
t2="'(common ancestor)'" 
t3="'(to be merged)'" 

    "C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -wait -merge -3 -a2 -title1:${t1} -title2:${t2} -title3:${t3} "$alocal" "$base" "$remote" "$result" 

de cette façon, vous pouvez voir plus facilement ce qui est quoi.

3

Je ne suis pas entièrement sûr que cette explication est correcte, mais BASE sera le point où les deux versions du fichier étaient les mêmes. C'est peut-être ce que vous appelez le «parent» dans un arbre Git. Quand ils ont divergé, vous avez fini par LOCAL et REMOTE qui sont en conflit les uns avec les autres.