问题描述
|
我的公司不使用分支机构/标签/主干事物,并且基本上我们所有的开发人员始终在中继上工作。我现在遇到一个问题,我进行了一些更改并提交了这些更改,现在必须将其还原。但是在此期间,另一位开发人员进行了一些无关的更改。因此,我们的提交结构如下所示:
103:乔·布鲁(Joe Blow)-一些无关的更改
102:韦恩-更改模块A
101:约翰·史密斯-变了等等等等
我在#101上使用了“还原到该修订版本”来撤消更改(#102),但是现在我需要将它们重新提交,因为#103包含了它们。我没有使用很多SVN功能,因此有一种方法可以将我的新更改提交给#103,而不会覆盖它,并且强制“ Joe Blow \”重新提交他的更改,而没有进入#103并手动重新添加所有内容他的变化?
我正在努力促使我们开始使用分支,但是我认为这里没有人真正理解它们,因此我怀疑它会被实现。
解决方法
您应该能够进行修订版102的\“反向合并\”(我认为是“ 0”,尽管我对SVN的命令行语法不是很熟悉)。这将撤消该修订版的更改。
这与还原不同,因为它只关心101和102之间所做的更改,而忽略合并中103的更改。因此,应该保留103。 (当然,假设它与102的更改无关。)
确认合并应该很快,因为理想情况下,本地更改的差异应与刚刚交换的101到102的差异匹配。
,----编辑为似乎要撤消更改,起初我以为您想重新应用它们-
您可以反向执行svn diff。这将创建一个补丁文件,它将“撤消”您的更改。生成反向差异的关键是在命令行中切换修订版本号,因此
svn diff -r101:102 ...
创建一个diff,它将添加从101生成102的项,而
svn diff -r102:101
创建一个差异,该差异将从102中删除项目以生成101。
---原始帖子如下---
使用svn diff
在修订版101和102之间创建一个差异文件,然后将存储库更新为修订版103,并通过修补程序实用程序将更改合并回去。然后,您的提交104将读取类似“在提交103中还原的提交102中的已更改更改”之类的内容。
经常撤消他人变更的人必须通过提高对其行为和与之相关的成本的认识来应对。如果他们不在乎,那么您就必须权衡去别人的费用和获得足够利益的可能性。
,如果您使用的是TortoiseSVN,则可以使用修订日志,并通过从上下文菜单中选择“从此修订中还原更改”,然后提交来仅还原在特定修订中所做的更改。