我有\ trunk \ root \,其中包含文件夹ProjectA,ProjectB等 . 我创建了root分支 - > \ branches \ task \ root \
现在我对包括ProjectB在内的任务项目进行了大量更改 .
但是\ trunk \ root \ ProjectB也转移到了使task \ Root \ ProjectB中的所有更改都冗余的点 .
我想用\ trunk \ root \ ProjectB的内容完全替换\ branches \ task \ root \ ProjectB的内容 . 没有合并只是让任务版本ProjectB与trunk版本相同 . 请注意,当将任务重新合并到trunk时我不希望在ProjectB中发生任何奇怪的事情,SVN应该只看到它是ProjectB中现在的旧版本并且不会更改其中的任何内容 .
任何人都可以通过使用TortoiseSVN来实现这一目标,引导一个像我这样的SVN(也恰好是一个完整的CLI) .
4 回答
删除分支上的当前ProjectB,在svn repo上执行此操作
将主干ProjectB再次复制到该分支位置(以前是ProjectB) .
还原,或者更好的是,重新检查ProjectB .
那就是如果你没有失去历史 .
将保留历史记录的另一种方法 - 但这将使用Eclipse IDE
从主干结帐ProjectB
从分支机构检出ProjectB(到Eclipse中的另一个项目)
比较两个版本的ProjectB,并将Trunk Project B中的所有更改引入分支ProjectB
Checkin Branch Project B
Switch
工作副本到/branches/task/root/ProjectB
(或checkout
来自此URL的新WC)右键单击并选择
Merge
选择
Merge two different trees
来自:
/branches/task/root/ProjectB
收件人:
/trunk/root/ProjectB
将其他选项保留为默认值,然后单击
Merge
(或Test merge
)通过选择文件的中继版本来解决所有冲突
这将带来必要的更改,使您的分支与主干相同 . 然后你可以提交 .
在Tortoise中您可以右键单击并执行相当于“svn delete”的操作,即删除要杀死的分支 .
然后你需要做一个Tortoise副本并放入新的路径 .
通常,您应该定期将主干中所做的更改重新集成到分支中,以避免出现这种情况 .
为什么不保留以前的分支,而是改为新分支?在结构中使用版本是很常见的,如:
要使用TortoiseSVN执行此操作,请移动您的分支:
打开repo-browser(上下文菜单,
TortoiseSVN
- >repo-browser
)创建branches / task / version1.0目录(
Create folder
on task)将分支/任务重命名为branches / task / version1.0(
Rename
on task)然后你可以正常进行:
(签出的中继目录上的上下文菜单)
TortoiseSVN
- >Branch/Tag
指定新分支的
To URL
(branches / task / version2.0)指定是否要从工作副本或其他地方创建新分支(我强烈建议先提交并从HEAD分支)
(或者您可以使用repo-browser并从主干执行
Copy to
)当工具警告你时,你仍然需要切换:
(同一目录下的上下文菜单)
TortoiseSVN
- >Switch
指定新分支的
To URL
(branches / task / version2.0)你会有更清洁的东西 .
如果你选择删除分支,你可以通过指定要合并的修订范围(其中一个字段用TortoiseSVN填写)来避免混淆 . 确保排除与已删除分支相关的任何内容 . 但说实话,我会避免这种情况 .