svn commit冲突常识

以commit后

自动生成R.java.mine,R.java.r3368,R.java.r3439为例

因为发生冲突了,别人和你都从3368这个版本对r.java这个文件进行了修改,别人修改后先提交了形成3439版本,然后你做了提交操作,这时为了避免你覆盖别人的修改工作,SVN提示你发生了冲突,并自动形成R.java.mine、R.java.r3368、R.java.r3439这三个文件。
其中:
R.java.mine是你自己修改后准备提交的那个版本;
R.java.r3368是你们的初始版本;
R.java.r3439是别人赶在你之前提交的那个版本;
另外应该还有个R.java是自动合并了你的版本和别人提交的版本形成的(其中用<<<<<、======、>>>>>等符号标记出了自动合并的部分)。

自动生成这些文件的目的是便于你手动合并你们两个人的修改。这时建议你查看一下这个文件的历史记录,看看3439这个版本是谁提交的,问问他修改了什么地方,然后你手动将你们两个人的修改合并到同一个文件r.java中,然后使用SVN标记“冲突已解决”,标记后多余的文件会被自动删除,然后你就可以正常提交了。
或许
找到冲突的文件右键找到Edit conflicts 对冲突进行修整,调整好之后保存,右键选择Resolved...便可解决冲突
 
   

二:今天在提交项目文件到本地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.txtTop piece of breadMayonnaiseLettuceTomatoProvolone<<<<<<< .mineSalamiMortadellaProsciutto=======SauerkrautGrilled Chicken>>>>>>> .r2Creole MustardBottom piece of bread小于号、等于号和大于号串是冲突标记,并不是冲突的数据,你一定要确定这些内容在下次提交之前得到删除,前两组标志中间的内容是你在冲突区所做的修改:

<<<<<<< .mineSalamiMortadellaProsciutto=======后两组之间的是Sally提交的修改冲突:

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

Top piece of breadMayonnaiseLettuceTomatoProvoloneSalamiMortadellaProsciuttoCreole MustardBottom 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 updateC  sandwich.txtUpdated 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.txtReverted '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基本的工作周期,还有许多其它特性可以管理你得版本库和工作拷贝,但是只使用前面介绍的命令你就可以很轻松的工作了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答:根据你提供的引用信息,你在执行svn commit命令时遇到了问题。错误信息显示说文件'/export/js/aa.js'仍然处于冲突状态,导致提交失败。通常情况下,在working copy目录中进行文件操作时,比如删除或移动文件,应该使用svn del或svn move命令,而不是直接使用终端的rm或mv命令。这样才能确保svn能够跟踪到文件的变化并正确提交。除此之外,如果你不想将某个文件纳入版本控制,可以使用svn revert命令进行回滚到服务器上最新的版本。例如,执行svn revert .project可以回滚.project文件。如果需要回滚整个文件夹,则可以执行svn revert -R path。请根据这些信息检查你的操作并尝试解决冲突后再次提交。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [svn篇之提交svn commit 提示Aborting commit 问题解决](https://blog.csdn.net/xu710263124/article/details/128244911)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [如何在Ubuntu下用SVN commit](https://blog.csdn.net/weixin_39595164/article/details/116673481)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [svn——svn commit 用法](https://blog.csdn.net/qq_39790633/article/details/103700391)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值