如何合并SVN不同分支中两个文件的历史记录
合并SVN不同分支中两个文件的完整历史记录
操作前提
- 本地已检出两个分支的最新代码,工作副本无未提交修改
- 提前确认两个文件的历史变更无不可调和的冲突(若有冲突需手动解决)
具体步骤(以将Branch2/b.txt的历史合并到Branch1/a.txt为例)
将Branch2的b.txt完整历史复制到Branch1
切换到Branch1的本地工作副本,执行:svn copy ^/Branch2/b.txt@60 ^/Branch1/b_temp.txt -m "临时复制b.txt全量历史至Branch1"这里
@60是b.txt的最新版本号,确保复制完整历史链。合并临时文件的历史到目标文件a.txt
在Branch1工作副本中执行合并命令,覆盖b.txt从创建到最新的所有变更:svn merge ^/Branch1/b_temp.txt@32 ^/Branch1/b_temp.txt@60 a.txt -m "合并b.txt的全部历史记录到a.txt"@32是b.txt的创建版本,@60是最新版本,此操作会将b.txt的所有历史变更应用到a.txt,同时保留a.txt自身的历史。处理冲突(若有)
合并时若出现内容冲突,手动编辑a.txt解决冲突后,执行:svn resolved a.txt提交合并结果
提交合并后的a.txt:svn commit -m "完成a.txt与b.txt的历史合并"清理临时文件(可选)
不需要保留临时文件时,删除它:svn delete ^/Branch1/b_temp.txt -m "清理临时文件"
补充说明
- 若要合并到b.txt,只需调换分支和文件名称重复上述步骤
- 合并完成后,通过
svn log a.txt可查看包含原a.txt和b.txt的所有历史记录 - 操作前建议备份工作副本,避免误操作导致数据丢失
内容的提问来源于stack exchange,提问作者92rwf0lXXW4m
相关产品推荐
相关产品推荐

