这是一个特例,我知道在一般情况下(即计算机代码),将两个更改自动合并到不同分支中的同一行是不安全的。
然而,在这种情况下,所讨论的行是英语句子,并且变化是产品化。一个例子:
合并基地:
从您的iPhone或Android手机中查找推文,或撰写自己的推文!
分支1:
从iPhone或Android手机中找到%(PRODUCT:MESSAGE_PLURAL),或者发一条自己的推文!
分支2:
从您的iPhone或Android手机中查找推文,或撰写自己的%(PRODUCT:MESSAGE)!
这是手工合并的一个简单案例,但不幸的是,我们现在正在产生大量的这些冲突。那里有合并工具可以做到这一点吗? (或任何其他自动化此过程的方法)
答案 0 :(得分:0)
我尝试在我选择的合并工具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 +}!
我不是真正的开发人员,但如果我是,我想我能编写一个标识[-*-]
或{+*+}
实例的正则表达式,删除这些字符并交替保存或基于$(*)
的存在删除了内容,这似乎是产品化中的一个共同元素。
如果有大量文件,这可能会很麻烦,因为它需要将> file.txt
输出映射到相关文件的额外步骤。
可能的解决方案:git ls-files -u | git diff branch1..branch2 -U99999 --word-diff > ./intermediate/filename
该代码是错误的,但您应该能够编写一个bash脚本来获取所有未合并的文件,将每个文件的diff与整个文件的上下文保存到具有原始文件名的中间文件。
其他选择:
您可以照常合并分支,但是根据上面的逻辑编写脚本来解决合并冲突,虽然增加了多行的复杂性,解析<<<<<<< ,=======,>>>>>等等。
比我更有经验的人也可以使用git-filter-branch