1、预测冲突
svn status -u
预测svn update命令将从服务器带来的更新。
2、先更新
$ svn update
U INSTALL
G README
C bar.c
U和G没必要关心,文件干净的接受了版本库的变化,文件标示为U表明本地没有修改,文件已经根据版本库更新。
G标示合并,标示本地已经修改过,与版本库没有重迭的地方,已经合并。
C表示冲突,说明服务器上的改动同你的改动冲突了,你需要自己手工去解决。
3、解决冲突
$ 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 -m "Add a few more things"
svn: Commit failed (details follow):
svn: Aborting commit: '/home/sally/svn-work/sandwich.txt' remains in conflict
如果你遇到冲突,三件事你可以选择:
-“手动”合并冲突文本(检查和修改文件中的冲突标志)。
-用某一个临时文件覆盖你的工作文件。
-运行svn revert 来放弃所有的本地修改。
一旦你解决了冲突,你需要通过命令 svn resolved 让Subversion知道,这样就会删除三个临时文件,Subversion就不会认为这个文件是在冲突状态了。
注意svn resolved不像我们本章学过的其他命令一样需要参数,在任何你认为解决了冲突的时候,只需要小心运行svn resolved,一旦删除了临时文件,Subversion会让你提交这文件,即使文件中还存在冲突标记。