svn命令使用常见问题

1.如何添加文件 ?

  svn add filename

  svn ci -m "add file"

2. svn ci 出现冲突

  经常多人开发时难免多个人修改同一个文件导致冲突发送,或者在merge的时候也会出现,出现冲突时,svn up 出现

  elect: (p) postpone, (df) diff-full, (e) edit,  //(p) 推迟,(df) 显示全部差异,(e) 编辑,

      (mc) mine-conflict, (tc) theirs-conflict,   //(mc) 我的版本, (tc) 他人的版本,

      (s) show all options:                            //(s) 显示全部选项:

  一般选择p,会将冲突文件下载到你本地来处理,可以在本地看到test.txt(文件合并版本) test.txt.mine(我修改的版本) test.txt.r21(其他人修改前的) test.txt.r22(其他人修改的版本)这么几个文件,叫上其他人一起来修改test.txt合并版本,修改完成了删除删 除<<<<<<< .mine、=======和>>>>>>> .r22。再输入:

  svn resolve --accept working test.txt (该命令会删除test.txt.mine  test.txt.r21  test.txt.r22)

  svn ci -m ’some comment’ a.txt

3. 版本合并,正常情况一个项目可能会有多个分支,当分支需要合并的时候该如何做?

  eg:假设分支1要合并到主干,本地切换到分支1的文件目录,svn merge other_svn_url,你也可以指定要合并的分支版本svn merge other_svn_url -r22:HEAD ,出现冲突如2步骤解决。

  最后记得,svn ci -m "xxx"

4. svn delete不小心删错了文件如何恢复

  1) 第一种情况的svn delete filename了但是还没有commit(svn ci),那么可以使用 svn revert filename

  2)如果已经commit了,那么可以通过创建新的分支来恢复,首先svn log --verbose --stop-on-copy svn_repo_url查看版本记录,使用svn cp source_url@version des_url -m "xx"创建新的分支,eg:假设当前r8是包含没有删除文件的版本号,

  svn cp http://www.svnrepo.com/project/branche1/@8 http://www.svnrepo.com/project/branche2 -m "xxx"(branche1为之前svn url地址目录,别少了/,不然在新的分支文件结构是branche2/branche1,@8是版本号),然后在svn co http://www.svnrepo.com/project/branche2,就可以找回删除的文件

  3)如果使用工具的请转这里

5. svn diff 详解

  $ svn diff -r 2:3 rules.txt
  (1)Index: rules.txt
  (2)===================================================================
  (3)--- rules.txt (revision 2)
  (4)+++ rules.txt (revision 3)
  (5)@@ -1,4 +1,4 @@
  (6)Be kind to others
  (7)-Freedom = Chocolate Ice Cream
  (8)+Freedom = Responsibility
  (9)Everything in moderation
  (10)Chew with your mouth open

  第一行,显示文件
  第二行,分隔符
  第三行,老版本用“-”表示
  第四行,新版本用“+”表示
  第五行,老版本显示1~4行,新版本显示1~4行
  第六行,两个版本都有
  第七行,只有老版本有
  第八行,只有新版本有
  第九行,两个版本都有
  第十行,两个版本都有
  ==================

$ svn diff --revision PREV:COMMITTED foo.c
# shows the last change committed to foo.c

$ svn log --revision HEAD
# shows log message for the latest repository commit

$ svn diff --revision HEAD
# compares your working file (with local mods) to the latest version
# in the repository.

$ svn diff --revision BASE:HEAD foo.c
# compares your “pristine” foo.c (no local mods) with the
# latest version in the repository

$ svn log --revision BASE:HEAD
# shows all commit logs since you last updated

$ svn update --revision PREV foo.c
# rewinds the last change on foo.c.
# (foo.c's working revision is decreased.)
posted @ 2016-07-24 15:22  kaizhangzhang  阅读(879)  评论(0编辑  收藏  举报