我尝试在我选择的合并工具 Araxis Merge 中执行此操作,但结果是空的。
Beyond Compare 论坛最近有一个关于此的问题:http ://www.scootersoftware.com/vbulletin/showthread.php?t= 9411 请注意,Beyond Compare 的开发人员甚至不知道有这样的工具。
几个选项:Araxis Merge 和(我相信)Beyond Compare 都允许您使用正则表达式控制合并结果。你可以探索一下。
另外的选择,git diff branch1..branch2 -U99999 --word-diff > file.txt
然后您将拥有的是:从您的 iPhone 或 Android 手机中查找 [-%(PRODUCT:MESSAGE_PLURAL)s-]{+tweets+},或编写 [-tweet-]{+%(PRODUCT:MESSAGE)s+}你自己!
我不是真正的开发人员,但如果我是,我想我可以编写一个正则表达式来识别[-*-]
or的实例{+*+}
,剥离这些字符并根据 的存在交替保存或删除内容$(*)
,这似乎是产品化中的一个共同元素。
如果有很多文件,这可能会很痛苦,因为它需要将> file.txt
输出映射到相关文件的额外步骤。
可能的解决方案:git ls-files -u | git diff branch1..branch2 -U99999 --word-diff > ./intermediate/filename
该代码是错误的,但是您应该能够编写一个 bash 脚本来获取所有未合并的文件,将每个文件的差异与整个文件的上下文价值保存到一个中间文件中,并使用原始文件名。
其他选项:
您可以像往常一样合并分支,但是根据上面的逻辑编写一个脚本来为您解决合并冲突,尽管增加了多行的复杂性,解析 <<<<<<, =======, >>>>>等
比我更有经验的人也可以利用git-filter-branch