我们正在研究一个项目,然后突然有一些不合作/顽固的家伙进入并检查了搞乱项目的东西 - 使其不可构建但对我的模块没有影响。所以我们在使用上一个已知的工作版本时仍然在工作,我检查了我的更改,就像正常一样。然后项目经理决定将所有内容恢复到最后一个已知的工作版本(r1810),它变成了r1824。
现在,如何重新应用1814年,1815年和1821年的修订版?
我大部分时间都在Windows资源管理器上使用Tortoise SVN,在Visual Studio上使用AnkhSVN,所以我可以说在使用SVN时我仍然是使用命令提示符的新手。
答案 0 :(得分:4)
你需要“挑选”这些变化。
引用the manual:
< ...>樱桃这个术语。这个词指的是选择的行为 来自分支的一个特定变更集并将其复制到另一个分支。 Cherrypicking也可以指复制特定的行为 从一个分支到(不一定是连续的!)变更集的集合 另一个。这与更典型的合并方案形成对比,其中 “下一个”连续修订版本会自动复制。
要挑选,请使用svn merge -c 1814 ^whatever/branch
;
再次,引用the manual
:
--change (-c) ARG
使用特定的“更改”执行请求的操作。 一般来说,这个选项是
-r ARG-1:ARG
的语法糖。 某些子命令允许以逗号分隔的修订列表 数字参数(例如,-c ARG1,ARG2,ARG3
)。或者,你可以 提供两个用短划线分隔的参数(如-c ARG1-ARG2
中所示) 确定ARG1
和ARG2
之间的修订范围。 最后,如果修订参数被否定,则隐含修订 范围相反:-c -45
相当于-r 45:44
。
更新:由于OP的消化,他们需要使用
--ignore-ancestry
的{{1}}命令行选项,因为它们是svn merge -c
使用单一分支进行开发。