本文档旨在描述 Subversion 1.1。如果您运行的是更新版本的 Subversion,我们强烈建议您访问 https://svnbook.subversion.org.cn/ 并查阅适合您 Subversion 版本的本手册版本。
svn merge — 将两个源之间的差异应用于工作副本路径。
svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH]
svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]
svn merge -r N:M SOURCE[@REV] [WCPATH]
在第一种形式中,源 URL 在修订版 N 和 M 中指定。这是要比较的两个源。如果省略,修订版默认为HEAD。
在第二种形式中,SOURCE 可以是 URL 或工作副本项,在这种情况下,将使用相应的 URL。此 URL 在修订版 N 和 M 中定义要比较的两个源。
WCPATH 是将接收更改的工作副本路径。如果省略 WCPATH,则默认值为“.”,除非源具有相同的基名,并且与“.”中的文件匹配:在这种情况下,差异将应用于该文件。
与 svn diff 不同,merge 命令在执行合并操作时会考虑文件的祖先关系。当您将一个分支中的更改合并到另一个分支时,这非常重要,而您在一个分支中重命名了一个文件,但在另一个分支中没有重命名。
--revision (-r) REV --non-recursive (-N) --quiet (-q) --force --dry-run --diff3-cmd CMD --ignore-ancestry --username USER --password PASS --no-auth-cache --non-interactive --config-dir DIR
将分支合并回主干(假设您有一个主干的工作副本,并且该分支是在修订版 250 中创建的)
$ svn merge -r 250:HEAD http://svn.red-bean.com/repos/branches/my-branch U myproj/tiny.txt U myproj/thhgttg.txt U myproj/win.txt U myproj/flo.txt
如果您在修订版 23 处分支,并且您想将主干上的更改合并到您的分支中,您可以在您的分支的工作副本中执行此操作
$ svn merge -r 23:30 file:///tmp/repos/trunk/vendors U myproj/thhgttg.txt …
将更改合并到单个文件
$ cd myproj $ svn merge -r 30:31 thhgttg.txt U thhgttg.txt