菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
387
0

svn conflict

原创
05/13 14:22
阅读数 99748

安装svn

apt-get install subversion

  

 

 

当前两个人都更新版本为version1

A修改了monitor.txt文件 提交后版本为version2

B也修改了monitor.txt文件,提交后提示冲突,update后出现:

root@test61:/tmp/testsvn/switches# svn update
Conflict discovered in 'monitor.txt'.
Select: (p) postpone, (df) diff-full, (e) edit,
        (mc) mine-conflict, (tc) theirs-conflict,
        (s) show all options:
postpone 的意思是暂时推后处理,我可能要和那个和我冲突的家伙商量一番。 
diff-full,则是比比看,到底什么地方冲突了。
edit,修改冲突合并的文件。
mc,这个霸道,直接用我的。
tc , 底气不足,还是用别人修改的吧。

所以,一般是先选择p,然后发现会多几个文件,有1版本的,有2版本的,还有自己版本的,所以这时候就和A去协商下怎么改好吧。。。

然后选择还不能提交,svn st会发现monitor.txt提示是C  ,这时候需要先使用resolve命令来说明怎么解决冲突

$svn resolve --accept working reademe.txt
 
svn resolve 是解决冲突的命令。解决的方法由--accept 选项决定。
base  恢复到冲突前的一个版本。
mine-full  恢复到以我的修改为主的版本
their-full  恢复到库中最新版本
working  手动解决

所以这里先用命令  svn resolve --accept working monitor.txt  然后就去修改monitor.txt,然后再commit就 ok了,当然之前生成的多余的文件也没有了。

root@test61:/tmp/testsvn/switches# svn commit -m "fix svn conflict test"                 还没有resolve就提交会报错
svn: Commit failed (details follow):
svn: Aborting commit: '/tmp/testsvn/switches/monitor.txt' remains in conflict
root@test61:/tmp/testsvn/switches# svn resolve --accept working monitor.txt         先resolve说明手动解决
Resolved conflicted state of 'monitor.txt'
root@test61:/tmp/testsvn/switches# svn commit -m "fix svn conflict test"                 提交成功
Sending        monitor.txt
Transmitting file data .
Committed revision 15451.

 

如果是选择edit,也需要resolved(注意这里是和resovle不同的命令!)才能结束conflict,这时候任然处于没有提交的状态,直接提交就可以了。

 

如果是windows就直接会自动用p命令,然后自己去搞吧

发表评论

0/200
387 点赞
0 评论
收藏