SVN 解决冲突(七)
7.解决冲突
一、冲突产生原因
- 两个用户(A 和 B)基于同一个旧版本(如版本 100)修改了同一个文件。
- A 先提交成功,仓库版本变为 101。
- B 基于旧的版本 100 修改后提交,由于不是基于最新版本,提交失败,产生冲突。
二、冲突解决步骤
以
HelloWorld.html为例
1. 修改文件并尝试提交
# 编辑 HelloWorld.html
cat HelloWorld.html
HelloWorld! http://www.runoob.com/
# 查看本地修改
svn diff提交时失败:
svn commit -m "change HelloWorld.html first"
# 错误:File '/trunk/HelloWorld.html' is out of date2. 更新工作副本(触发冲突)
svn update输出示例:
C HelloWorld.html
Updated to revision 6.
Conflict discovered in file 'HelloWorld.html'.
Select: (p) postpone, (df) show diff, (e) edit file, (m) merge,
(mc) my side of conflict, (tc) their side of conflict,
(s) show all options: mc
Resolved conflicted state of 'HelloWorld.html'3. 冲突选项说明
| 选项 | 含义 |
|---|---|
p (postpone) |
暂缓处理,稍后手动解决 |
df (show diff) |
显示冲突双方的差异 |
e (edit file) |
直接编辑冲突文件 |
m (merge) |
自动合并(尝试) |
mc (my side) |
以本地(我的)版本为准 |
tc (their side) |
以仓库(他们的)版本为准 |
s (show all) |
显示所有选项 |
本例中选择
mc,即保留本地修改,丢弃仓库中的变更。
4. 提交成功
svn commit -m "change HelloWorld.html second"
# Committed revision 7.三、补充命令
更新到指定版本(跳过冲突):
svn update -r6
四、核心要点
- 冲突是协作开发的正常现象,不要强行提交。
- 标准流程:
svn update → 选择冲突处理策略 →svn commit。 - 养成提交前先
update的习惯,可有效减少冲突概率。