WinMerge/winmerge

GitHub: WinMerge/winmerge

WinMerge 是一款 Windows 平台上的开源文件和文件夹可视化差异比较与合并工具,帮助用户直观追踪变更并高效合并修改。

Stars: 8752 | Forks: 972

# WinMerge [![logo](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/f17f274a82141504.png)](https://github.com/WinMerge/winmerge) [WinMerge](https://winmerge.org/) 是一款 Windows 平台上的开源差异比较与合并工具。 它可以比较文件和文件夹,并以清晰、直观的视觉格式呈现差异,便于理解和使用。 自 2000 年以来,WinMerge 一直处于活跃开发状态。 [![构建状态](https://ci.appveyor.com/api/projects/status/h3v3ap1kswi1tyyt?svg=true)](https://ci.appveyor.com/project/sdottaka/winmerge/build/artifacts) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/2646039d5d141505.svg)](https://github.com/WinMerge/winmerge/actions) [![sourceforge.net 下载量](https://img.shields.io/sourceforge/dt/winmerge)](https://sourceforge.net/projects/winmerge/files/) [![GitHub Releases](https://img.shields.io/github/downloads/winmerge/winmerge/total.svg)](https://github.com/WinMerge/winmerge/releases/latest) [![翻译状态](https://img.shields.io/badge/translations-39-green)](https://github.com/WinMerge/winmerge/blob/master/Translations/TranslationsStatus.md) ## WinMerge 能做什么? WinMerge 提供了丰富的功能,用于比较和合并文件与文件夹: - **文件比较** 并排比较两个或三个文本文件,逐行高亮显示差异。 也可以显示一行内的内联差异。 - **文件夹比较** 比较两个文件夹的内容,查看哪些文件存在差异、缺失或仅存在于其中一侧。 文件夹比较支持**高级过滤表达式**,允许根据名称、路径、大小、时间戳和其他属性包含或排除文件和文件夹。 - **合并** 通过选择性地将差异从一侧应用到另一侧,合并文件或文件夹之间的更改。 - **语法高亮** 针对多种编程语言和文件格式的语法高亮功能,有助于使代码和结构化文本更易于阅读和比较。 - **补丁文件创建** 生成标准 (normal)、上下文 或统一 格式的补丁文件。 - **灵活的忽略选项** 忽略诸如空格更改、大小写差异或与正则表达式匹配的行等差异。 - **外壳集成** 与 Windows Explorer 集成,可通过右键上下文菜单直接进行比较。 - **压缩包支持** 借助 7-Zip,WinMerge 可以像比较普通文件夹一样比较多种压缩包格式内的文件。 简而言之,WinMerge 对于任何需要跟踪更改、比较文件或目录版本,或高效合并修改的人来说都非常有用。 ## 如何贡献 如果您发现错误或希望提出功能请求,请[提交 issue](https://github.com/WinMerge/winmerge/issues)。 如需贡献代码: 1. [Fork WinMerge 仓库](https://github.com/WinMerge/winmerge/fork) 2. 在你的 fork 中创建一个功能分支 3. 遵循现有的代码风格(使用 [Allman 缩进](https://en.wikipedia.org/wiki/Indentation_style#Allman_style)) 4. 提交一个描述你所做更改的 [Pull Request](https://github.com/WinMerge/winmerge/pulls) ## 文件夹结构 WinMerge 仓库的组织结构如下: - `ArchiveSupport/Merge7z` 连接 WinMerge 与 7-Zip 的 Merge7z DLL。构建 `WinMergeU.exe` 时需要。 其中也包含了这些 DLL 的独立安装程序。 - `Build` 编译期间创建的输出目录。包含可执行文件、库、手册等。 - `BuildTmp` 编译期间创建的临时文件。可以安全删除。 - `ColorSchemes` 配色方案和主题。 - `Docs` 用户和开发者文档。在本地浏览请打开 `Docs/index.html`。 - `Externals` WinMerge 使用的第三方库(部分经过定制)。 - `Filters` 文件和文件夹过滤规则定义。 - `Installer` WinMerge 安装程序源码。 - `Plugins` 运行时插件 DLL 和脚本。 - `ShellExtension` 添加上下文菜单项的 Windows Explorer 外壳扩展。 - `Src` WinMerge 主源代码。 - `Testing` 测试文件和脚本,包括基于 [Google Test Framework](https://github.com/google/googletest) 的单元测试。 - `Tools/Scripts` 各种开发实用工具。 - `Translation` 语言和翻译文件。 更新日志可在以下地址查看: [Docs/Users/ChangeLog.md](https://github.com/WinMerge/winmerge/blob/master/Docs/Users/ChangeLog.md) ## 如何运行和调试 WinMerge 提供了多个 Visual Studio 解决方案文件 (`.sln`) 用于构建和调试。 运行其中一个 `BuildAll` 脚本后,你可以从以下路径启动 WinMerge: Build\X64\Release\WinMergeU.exe 如果你是为其他架构构建的,请检查相应的输出文件夹。 要进行调试,你也可以正常启动 WinMerge,然后将 Visual Studio 附加到运行中的进程。 ## 构建 WinMerge ### Visual Studio 2017 - Community / Professional / Enterprise - VC++ 2017 (v141) 工具集 - Visual C++ MFC 和 ATL - Windows 10 SDK - 可选:用于 C++ 的 Windows XP 支持 ### Visual Studio 2022 或更高版本 - Community / Professional / Enterprise - MSVC v143 或更新版本 - Visual C++ MFC 和 ATL - Windows 10 SDK ### 附加工具 - git - Inno Setup 5.x 和 6.x - 7-Zip - Python - Pandoc - MSYS2(包含 `po4a` 和 `diffutils`) ## 如何构建 ``` git clone --recurse-submodules https://github.com/WinMerge/winmerge cd winmerge DownloadDeps.cmd BuildAll.cmd [x86|x64|ARM64] # 或 BuildAll.vs2022.cmd [x86|x64|ARM64] # 或 BuildAll.vs2017.cmd [x86|x64|ARM|ARM64] ```
标签:SOC Prime, Windows, WinMerge, 代码审查, 代码比较, 可视化对比, 差异分析, 差异合并, 开发工具, 数据对比, 文件夹对比, 文件对比, 文件管理, 文本比较, 补丁生成, 语法高亮