本手册描述了 Subversion 1.4。如果您正在运行更新版本的 Subversion,我们强烈建议您访问 https://svnbook.subversion.org.cn/ 并参考适合您 Subversion 版本的书籍。
svn merge — 将两个源之间的差异应用到工作副本路径。
svn merge [-c M | -r N:M] SOURCE[@REV] [WCPATH]
svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH]
svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]
在第一和第二种形式中,源路径(第一种形式中的 URL,第二种形式中的工作副本路径)在修订版 N 和 M 中指定。这是要比较的两个源。如果省略,修订版默认为 HEAD。
-c M 选项等效于 -r N:M,其中 N = M-1。使用 -c -M 做相反的事情:-r M:N,其中 N = M-1。
在第三种形式中,SOURCE 可以是 URL 或工作副本项,在这种情况下,将使用相应的 URL。此 URL 在修订版 N 和 M 中定义了要比较的两个源。
WCPATH 是将接收更改的工作副本路径。如果省略 WCPATH,则假设默认值为“.”,除非源具有相同的基名,这些基名与“.”中的文件匹配:在这种情况下,差异将应用于该文件。
与 svn diff 不同,合并命令在执行合并操作时会考虑文件的祖先关系。当您将一个分支的更改合并到另一个分支时,这非常重要,而您在一个分支上重命名了一个文件,但在另一个分支上没有重命名。
--revision (-r) REV --change (-c) REV --non-recursive (-N) --quiet (-q) --force --dry-run --diff3-cmd CMD --extensions (-x) ARG --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