我最近从 Ubuntu 12.04 升级到 12.10,有一次,它在apache2.conf
.当时我没有给我合并选项,所以我只是拒绝了新文件,安装程序将新文件保存为apache2.conf.dpkg-dist
.
我可以比较这两个文件diff apache2.conf apache2.conf.dpkg-dist
并仅获取不同的行。但我想手动合并两者,就像我如何解决 SVN 或 git 中的合并冲突一样。我怎样才能做到这一点?
答案1
答案2
版本控制在解决冲突时有更多可用信息:它不仅有你的版本和其他人的版本,还有共同的祖先,因此它可以做三路合并。在这里,共同祖先是发行版中配置文件的原始版本,或者是您上次与更改合并的正式版本。
不幸的是,Ubuntu 和我所知道的任何其他主要发行版都无法在配置文件更新时完全无缝地进行三向合并。然而,你可以接近等等管理员。等管理员是 APT 的一个附加组件,APT 是 Debian 及其衍生产品使用的包管理工具,/etc
在版本控制系统(Bazaar、Darcs、Git、Mercurial)中进行管理;它已被移植到其他系统,包括 Fedora 中的 Yum。我推荐使用etckeeper;这也是跟踪您所做的更改的好方法/etc
。
一些程序管理它们的配置文件UCF,但这不是您作为用户可以控制的。
更一般地,当您拥有祖先和两个版本时,您可以与merge
实用程序附带RCS或与diff3 -m
从扩散剂。
还有很多交互式差异和合并程序。 Emacs 和 Vim 都有相应的界面,就像大多数软件一样差异观众。
答案3
我个人最喜欢的是kdiff3
- 我不知道是否有 Ubuntu 版本。根据主页它只是使用qt。
使用该工具,您可以将两个(或三个)文件合并为一个新文件。要么为每个差异选择一方,要么手动解决冲突。