svn命令下载代码~windows 怎么用svn命令?( 二 )


不管是从trunk合并到branch还是最终从branch合并回trunk , 在每次合并前最好先update , 然后将本地的修改先全部commit , 保护好现场 , 万一合并不理想随时都可以revert http://blog.csdn.net/eggcalm/article/details/6606520

http://zhengkun.readthedocs.org/zh_CN/latest/2014/02/07/svn-usage/
5、关于解决冲突
发生冲突之后会出现三个临时文件:
XXX.mine XXX.r1 XXX.r2
一旦解决了冲突 , 需用svn resolved让subversion知道 , 这样就会删除这三个临时文件 , 冲突状态解决 。
三种解决方式:

  • 手工合并冲突:需要将冲突标志删除

  • 用某一个临时文件覆盖自己的工作文件

  • 用svn revert 放弃本地修改 , 不需要执行resolved


  • Q2:如何在命令行通过SVN命令筛选出修改过的文件并递交思路:
    1 , 查看所有文件的状态
    2 , 通过文件状态筛选出状态为“M”(修改)的文件
    3 , 递交
    解决办法:
    1 , 输入命令:$svn st
    查看所有文件的状态 , 比如:
    guizhigngdemini:proj.ios guizhigang$ svn st
    M channels/91/src/AppController.mm
    M channels/91/src/dota_91.plist
    M channels/i4/src/AppController.mm
    M channels/itools/src/AppController.mm
    M channels/itools/src/dota_itools.plist
    M channels/ky/src/AppController.mm
    M channels/pp/src/AppController.mm
    M channels/tb/src/AppController.mm
    M channels/xy/src/AppController.mm
    M dota.xcodeproj/project.pbxproj
    ? dota.xcodeproj/xcshareddata/xcdebugger
    可以看出我的环境下的输出结果
    2 , 输入命令:$svn st | grep "M" | cut -c 8->modified.txt
    以上命令将会把状态为M的文件筛选出来存入modified.txt文件 , 可以打开此文件查看是不是正确的 。
    3 , 只将modified.txt中记录的文件递交到SVN服务器
    输入命令:svn ci -m "add buyGoods fun to every channel" --targets modified.txt
    比如:
    guizhigngdemini:proj.ios guizhigang$ svn ci -m "add buyGoods fun to every channel" --targets modified.txt
    Sending channels/91/src/AppController.mm
    Sending channels/91/src/dota_91.plist
    Sending channels/i4/src/AppController.mm
    Sending channels/itools/src/AppController.mm
    Sending channels/itools/src/dota_itools.plist
    Sending channels/ky/src/AppController.mm
    Sending channels/pp/src/AppController.mm
    Sending channels/tb/src/AppController.mm
    Sending channels/xy/src/AppController.mm
    Sending dota.xcodeproj/project.pbxproj
    Transmitting file data ..........
    Committed revision 9413.
    Q3:SVN常用命令及例句1、Linux命令行下将文件checkout到本地目录
    svn checkout path(path是服务器上的目录)
    例如:svn checkout svn://192.168.1.1/pro/domain
    简写:svn co
    2、Linux命令行下往版本库中添加新的文件
    svn add file
    例如:svn add test.php(添加test.php)
    svn add *.php(添加当前目录下所有的php文件)
    3、Linux命令行下将改动的文件提交到版本库
    svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁 , 就使用–no-unlock开关)
    例如:svn commit -m “add test file for my test“ test.php
    简写:svn ci
    4、Linux命令行下的加锁/解锁
    svn lock -m “LockMessage“ [--force] PATH
    例如:svn lock -m “lock test file“ test.php
    svn unlock PATH
    5、Linux命令行下更新到某个版本
    svn update -r m path
    例如:
    svn update如果后面没有目录 , 默认将当前目录以及子目录下的所有文件都更新到最新版本 。
    svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
    svn update test.php(更新 , 于版本库同步 。如果在提交的时候提示过期的话 , 是因为冲突 , 需要先update , 修改文件 , 然后清除svn resolved , 最后再提交commit)
    简写:svn up
    6、Linux命令行下查看文件或者目录状态
    1)svn status path(目录下的文件和子目录的状态 , 正常状态不显示)
    【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
    2)svn status -v path(显示文件和子目录状态)
    第一列保持相同 , 第二列显示工作版本号 , 第三和第四列显示最后一次修改的版本号和修改人 。
    注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的 , 原因是svn在本地的.svn中保留了本地版本的原始拷贝 。


    推荐阅读