最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

SVN解决冲突

来源:动视网 责编:小OO 时间:2025-10-06 17:15:21
文档

SVN解决冲突

SVN解决冲突一、撤销本次修改,或者发现本次修改有问题,想撤销重头再来svnrevert文件名如下:撤销增加foo这个文件$svnstatusfoo?foo$svnaddfooAfoo$svnrevertfooReverted'foo'$svnstatusfoo?foo注:svnrevert某文件(在工作版本上修改) 与删除某文件然后再从svn版本库里update的操作结果是一样的。但是使用svnrevert不需要通知版本库就可以修改文件。二、解决冲突(1)冲突的发现    在做groovy时
推荐度:
导读SVN解决冲突一、撤销本次修改,或者发现本次修改有问题,想撤销重头再来svnrevert文件名如下:撤销增加foo这个文件$svnstatusfoo?foo$svnaddfooAfoo$svnrevertfooReverted'foo'$svnstatusfoo?foo注:svnrevert某文件(在工作版本上修改) 与删除某文件然后再从svn版本库里update的操作结果是一样的。但是使用svnrevert不需要通知版本库就可以修改文件。二、解决冲突(1)冲突的发现    在做groovy时
                        SVN解决冲突

一、撤销本次修改,或者发现本次修改有问题,想撤销重头再来 

svn revert 文件名

如下:撤销增加foo这个文件

$ svn status foo

? foo

$ svn add foo

A foo

$ svn revert foo

Reverted 'foo'

$ svn status foo

? foo

注:svn revert某文件(在工作版本上修改)  与 删除某文件然后再从svn 版本库里update的操作结果是一样的。

但是使用svn revert不需要通知版本库就可以修改文件。

二、解决冲突

(1)冲突的发现

       在做groovy时通常会有显示冲突的文件使得该操作不能进行;在测试机上重启时如果无法启动,可以查看webroot下的文件状态

注:在进行一次merge或者文件比较多的groovy之后最好在trunk上利用svn st查看文件状态,以发现潜在的冲突。并不是所有的 冲突都会显示在groovy之中。

另外,在进行svn up时也可发现冲突

$ svn update

U INSTALL

G README

C bar.c

Updated to revision 46.

U和G不用关心,表示本地没有修改,文件是根据版本库进行更新的;G表示本地已经修改过,与版本库没有冲突,已经进行了合并;

C表示服务器上的改动与你本地的改动有冲突,需要手工修改

(2)冲突的标志

当冲突发生了,有三件事可以帮助你注意到这种情况和解决问题:

? svn up打印C标记,并且标记这个文件已冲突。

? 如果Subversion认为这个文件是可合并的,它会置入冲突标记—特殊的横线分开冲突的“两

面”—在文件里可视化的描述重叠的部分(Subversion使用svn:mime-type属性来决定一

个文件是否可以使用上下文的,以行为基础的合并,更多信息可以看“文件内容类型”一

节。)

? 对于每一个冲突的文件,Subversion放置三个额外的未版本化文件到你的工作拷贝:

filename.mine 你更新前的文件,没有冲突标志,只是你最新更改的内容。(如果Subversion认为这个文件不可以合

并,.mine文件不会创建,因为它和工作文件相同。)

filename.rOLDREV 这是你的做更新操作以前的BASE版本文件,就是你在上次更新之后未作更改的版本。

filename.rNEWREV 这是你的Subversion客户端从服务器刚刚收到的版本,这个文件对应版本库的HEAD版本。

这里OLDREV是你的.svn目录中的修订版本号,NEWREV是版本库中HEAD的版本号。

例:A修改了sandwich.txt,B刚刚改变了他的本地拷贝中的这个文件并且提交到服务器,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,直到你的三个临时文件被删掉。

(3)冲突的解决

    如果遇到冲突,可以选择三种方式解决:

<1>手动合并冲突文件(检查和修改文件中的冲突标志)

<2>用某一个临时文件覆盖你的工作文件

<3>运行svn revert来放弃所有的本地修改

如果解决了冲突,就需要通过svn resolved让svn知道会删除三个临时文件,svn不会认为这个文件在冲突状态了。

手工合并冲突文件

      当查看了具体出冲突的文件后,可以打开该文件,找到冲突的标志。

Top piece of bread

Mayonnaise

Lettuce

Tomato

Provolone

<<<<<<< .mine

Salami

Mortadella

Prosciutto

=======

Sauerkraut

Grilled Chicken

>>>>>>> .r2

Creole Mustard

Bottom piece of bread

小于和大于符号之间的就是冲突的地方,如果有能力在修改完文件并且删除冲突标志之后,进行svn resolved来删除三个临时文件

注:如果修改时不是很明白,可以参考冲突时的三个文件

 

复制某一工作文件(一般用的不是很频繁)

       如果只是希望取消本次的修改,你可拷贝svn为你生成的文件替换你的工作拷贝

$ 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(这里r2是版本库里你此次更新前的版本文件)

$ svn resolved sandwich.txt(用来删除三个临时文件)

 

运行SVNrevert撤销修改

      如果冲突时决定放弃本次修改,那么可以用svn revert来撤销并进行重新修改。

$ svn revert sandwich.txt

Reverted 'sandwich.txt'

$ ls sandwich.*

sandwich.txt

当使用svn revert时不需要再用svn resolved来删除临时文件了,因为撤销会恢复所有的文件到修改前,除了已删除的文件。

文档

SVN解决冲突

SVN解决冲突一、撤销本次修改,或者发现本次修改有问题,想撤销重头再来svnrevert文件名如下:撤销增加foo这个文件$svnstatusfoo?foo$svnaddfooAfoo$svnrevertfooReverted'foo'$svnstatusfoo?foo注:svnrevert某文件(在工作版本上修改) 与删除某文件然后再从svn版本库里update的操作结果是一样的。但是使用svnrevert不需要通知版本库就可以修改文件。二、解决冲突(1)冲突的发现    在做groovy时
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top