在Bazaar,如果你在foo.html中有冲突,它会另外制作3个文件
foo.html.BASE
foo.html.OTHER
foo.html.THIS
然后你可以
diff -Naur foo.html.BASE foo.html.OTHER
将公共基础与其他更改集进行比较非常有用,因为它可以告诉您确切地改变了什么,这有助于回答他们为什么这样做。例如,如果他们所有更改都是空格,您可以放心地使用自己的更改。
如何在git中完成此操作?
答案 0 :(得分:3)
git
不会在工作目录中存储这三个文件的实际完整副本。相反,它存储一个放置了冲突标记的文件。但是,您仍然可以使用:<stage>:<filename>
语法(git
工具 - 获取这些版本 - 文件实际上并不存在,因此,例如,普通diff
将无法看到它们。因此,举例来说,您可以运行git diff :1:foo.html :2:foo.html
来查看BASE
和THIS
之间的差异。第3阶段将是您的OTHER
版本。您还可以使用git mergetool foo.html
或git difftool foo.html
。如果你真的需要在它们上使用非git
工具,你可以这样做:
git show :1:foo.html > foo.html.BASE
git show :2:foo.html > foo.html.THIS
git show :3:foo.html > foo.html.OTHER
diff ......
答案 1 :(得分:2)
要在外部工具中获取文件之间的简单差异,您可以使用git difftool
。
在解决冲突的情况下,您还可以使用git mergetool
。
他们共享一组特定的配置和使用选项,但git mergetool
实际上会创建类似于您在Bazaar中知道的文件。有关这方面的详细信息,请参见上面链接的手册页。
difftool
和mergetool
知道一些常见的差异和合并工具,无需进一步配置即可使用它们(例如vimdiff,meld,k3diff等),但您可以配置自己的或使用用于更改这些工具行为的自定义选项。
您应该尝试让mergetool
执行您想要的操作(例如,mergetool
可以配置为在合并工具退出后不删除这些文件,因此您可以进一步检查它们。现在您已经有了一个起点,Google也会提供帮助,特别是如果手册页太技术性,不适合您的口味。
如果您遇到特定问题,可以打开一个新问题;)