2019独角兽企业重金招聘Python工程师标准>>>

今天在提交项目文件到本地SVN时提示错误如下:

过期:”global.php“在事务”21-1“,
You have to update your working copy first.

运行update更新后再次提交又出现如下错误:

svn: Commit failed (details follow):
svn: Aborting commit: 'global.php' remains in conflict查了一下SVN的手册才知道原来是多个版本之间遇到冲突。此时你需要解决冲突(合并别人的修改)。

举一个例子,Sally修改了sandwich.txt,Harry刚刚改变了他的本地拷贝中的这个文件并且提交到服务器,Sally在提交之前更新它的工作拷贝得到了冲突:

$ svn update C sandwich.txt Updated to revision 2. $ ls -1 sandwich.txt sandwich.txt.mine sandwich.txt.r1 sandwich.txt.r2

在这种情况下,Subversion会允许你提交sandwich.txt,直到你的三个临时文件被删掉。

$ svn commit --message "Add a few more things" svn: Commit failed (details follow): svn: Aborting commit: '/home/sally/svn-work/sandwich.txt' remains in conflict

如果你遇到冲突,三件事你可以选择:

  • “手动”合并冲突文本(检查和修改文件中的冲突标志)。
  • 用某一个临时文件覆盖你的工作文件。
  • 运行svn revert <filename>来放弃所有的修改。

一旦你解决了冲突,你需要通过命令svn resolved让Subversion知道,这样就会删除三个临时文件,Subversion就不会认为这个文件是在冲突状态了。

$ svn resolved sandwich.txt Resolved conflicted state of 'sandwich.txt'

手工合并冲突

第一次尝试解决冲突让人感觉很害怕,但经过一点训练,它简单的像是骑着车子下坡。

这里一个简单的例子,由于不良的交流,你和同事Sally,同时编辑了sandwich.txt。Sally提交了修改,当你准备更新你的版本,冲突发生了,我们不得不去修改sandwich.txt来解决这个问题。首先,看一下这个文件:

$ cat sandwich.txt
Top piece of bread
Mayonnaise
Lettuce
Tomato
Provolone
<<<<<<< .mine
Salami
Mortadella
Prosciutto
=======
Sauerkraut
Grilled Chicken
>>>>>>> .r2
Creole Mustard
Bottom piece of bread

小于号、等于号和大于号串是冲突标记,并不是冲突的数据,你一定要确定这些内容在下次提交之前得到删除,前两组标志中间的内容是你在冲突区所做的修改:

<<<<<<< .mine
Salami
Mortadella
Prosciutto
=======

后两组之间的是Sally提交的修改冲突:

=======
Sauerkraut
Grilled Chicken
>>>>>>> .r2

通常你并不希望只是删除冲突标志和Sally的修改—当她收到三明治时,会非常的吃惊。所以你应该走到她的办公室或是拿起电话告诉Sally,你没办法从从意大利熟食店得到想要的泡菜。一旦你们确认了提交内容后,修改文件并且删除冲突标志。

Top piece of bread
Mayonnaise
Lettuce
Tomato
Provolone
Salami
Mortadella
Prosciutto
Creole Mustard
Bottom piece of bread

现在运行svn resolved,你已经准备好提交了:

$ svn resolved sandwich.txt
$ svn commit -m "Go ahead and use my sandwich, discarding Sally's edits."

记住,如果你修改冲突时感到混乱,你可以参考subversion生成的三个文件—包括你未作更新的文件。你也可以使用第三方的合并工具检验这三个文件。

拷贝覆盖你的工作文件

如果你只是希望取消你的修改,你可以仅仅拷贝Subversion为你生成的文件替换你的工作拷贝:

$ svn update
C sandwich.txt
Updated to revision 2.
$ ls sandwich.*
sandwich.txt sandwich.txt.mine sandwich.txt.r2 sandwich.txt.r1
$ cp sandwich.txt.r2 sandwich.txt
$ svn resolved sandwich.txt

下注:使用svn revert

如果你得到冲突,经过检查你决定取消自己的修改并且重新编辑,你可以恢复你的修改:

$ svn revert sandwich.txt
Reverted 'sandwich.txt'
$ ls sandwich.*
sandwich.txt

注意,当你恢复一个冲突的文件时,不需要再运行svn resolved

现在我们准备好提交修改了,注意svn resolved不像我们本章学过的其他命令一样需要参数,在任何你认为解决了冲突的时候,只需要小心运行svn resolved,—一旦删除了临时文件,Subversion会让你提交这文件,即使文件中还存在冲突标记。

提交你得修改

最后!你的修改结束了,你合并了服务器上所有的修改,你准备好提交修改到版本库。

svn commit命令发送所有的修改到版本库,当你提交修改时,你需要提供一些描述修改的日志信息,你的信息会附到这个修订版本上,如果信息很简短,你可以在命令行中使用--message(-m)选项:

$ svn commit --message "Corrected number of cheese slices." Sending sandwich.txt Transmitting file data . Committed revision 3.

然而,如果你把写日志信息当作工作的一部分,你也许会希望通过告诉Subversion一个文件名得到日志信息,使用--file选项:

$ svn commit --file logmsg Sending sandwich.txt Transmitting file data . Committed revision 4.

如果你没有指定--message或者--file选项,Subversion会自动地启动你最喜欢的编辑器来编辑日志信息。

版本库不知道也不关心你的修改作为一个整体是否有意义,它只检查是否有其他人修改了同一个文件,如果别人已经这样做了,你的整个提交会失败,并且提示你一个或多个文件已经过时了:

$ svn commit --message "Add another rule" Sending rules.txt svn: Commit failed (details follow): svn: Out of date: 'rules.txt' in transaction 'g'

此刻,你需要运行svn update来处理所有的合并和冲突,然后再尝试提交。

我们已经覆盖了Subversion基本的工作周期,还有许多其它特性可以管理你得版本库和工作拷贝,但是只使用前面介绍的命令你就可以很轻松的工作了。

转载于:https://my.oschina.net/zhenguoguan/blog/138744

SVN Aborting commit: ‘XXXXXXXX’remains in confl...相关推荐

  1. Aborting commit: 'XXXXXXXX'remains in conflict错误

    为什么80%的码农都做不了架构师?>>>    今天在提交项目文件到本地SVN时提示错误如下: 过期:"global.php"在事务"21-1" ...

  2. svn: Aborting commit: '/aaa/bbb/xxxxxxxx' remains in conflict解决方法

    $ svn commit -m "zzzzzzzz" svn: Commit failed (details follow): svn: Aborting commit: '/aa ...

  3. svn incoming内容无法更新下来,且提交报错:svn: E155015: Aborting commit: XXX remains in conflict

    具体情况(觉得麻烦可直接看后面总结): 和同事用svn开发项目,同事提交了一些他自己写的测试的但与项目无关的包和类,在我把他的提交更新下来后,我把和项目无关的包和类删掉并提交了(步骤:我用的idea, ...

  4. svn commit 提示Aborting commit 失败问题解决办法

    最近在把分支上的代码合并到主干后,然后执行svn commit ,一直提示文件有冲突 build@QA1037:~/pro_workspace/dev/app/trunk/src/main/webap ...

  5. svn篇之提交svn commit 提示Aborting commit 问题解决

    一.问题描述 通常会遇到一种情况,当提交svn commit的时候,把分支上的代码进行提交到主干时,一直提示提交失败 二.问题报错如下 build@QA1037:~/pro_workspace/dev ...

  6. svn报错 svn: E155015: Aborting commit: remains in tree-conflict

    org.apache.subversion.javahl.ClientException: svn: E155015: Commit failed (details follow): svn: E15 ...

  7. Svn commit failed aborting commit

    一.背景 在使用svn管理项目时,删除了文件夹"项目图纸"里面的内容,然后在这个里面新增了一些文件,出现标题中的问题Svn commit failed aborting commi ...

  8. 改进的SVN的Commit权限控制

    源代码管理软件Subversion是继CVS后的又一个强力开源软件,现最新版本为1.2,开始支持lock模式了.(更坚定了我 使用它的决心)而当我们使用它的svnserve提供服务时,要实现目录级的验 ...

  9. SVN提交,报“remains in conflict”错误

    SVN提交,报"remains in conflict"错误解决方案: 1.把提示冲突的文件 的上级目录,选择revert,进行还原 2.然后再把本次需要提交的内容进行更新提交 3 ...

最新文章

  1. 极客新闻——11、程序员需要避免的10个坏习惯
  2. 计算机行业2019年度投资研究手册
  3. mongodb c++ driver安装踩坑记
  4. 03-高级选择器,属性选择器,伪类选择器
  5. html js文件域val,js实现文件上传表单域美化特效
  6. explain mysql怎么用_[mysql] mysql explain 使用
  7. html中after对应的样式怎么写,css – 如何创建内联样式:before和:after
  8. 改进初学者的PID-介绍
  9. (69)FPGA模块调用(system Verilog调用Verilog)
  10. 【自然语言处理】浅谈语料库
  11. C# 使用RestSharp库实现POST请求
  12. android第三方库进程,Android 第三方库AgentWeb的使用
  13. ML之RL:强化学习Reinforcement Learning的简介、应用、经典案例、学习资源之详细攻略
  14. 2018年世界杯助力优酷重返第一,也成为视频行业的分水岭
  15. 各种浏览器开启JavaScript脚本
  16. CPU虚拟化技术及QEMU/KVM虚拟机安装实践
  17. 【字符集五】c++标准库<locale>
  18. SVM支持向量机,函数间隔为什么取1
  19. 奈奎斯特与香农定理_大神带你理解奈奎斯特定理和香农定理
  20. UPC 小澳的葫芦 (最短路+01分数规划 )

热门文章

  1. 16条触动人心的心灵鸡汤经典语录,句句精辟,温暖又励志!(大神们看一看)
  2. 取消IE默认下载工具为迅雷
  3. 雨课堂python答案_带雨字好听的名字大全
  4. 电脑上的竖线符号怎么打出来
  5. 我的梦想指引前行与追寻梦想之路
  6. [Ljava.lang.Object 是什么
  7. 实勘丨龙岗南约炳坑京基旧改项目,地铁14号线宝荷站零距离!
  8. pta上c语言运行超时怎么解决,PTA测试题- 最大子列问题(C语言)
  9. vb.net 教程 5-1 字体(Font)
  10. VUE3 中实现拖拽和缩放自定义看板 vue-grid-layout