Add
使用add命令告诉svn哪些文件需要新增进去,最终还需要使用commit命令提交上去。
1.添加单个文件(例如:D:\a\1.txt)到svn中
svn add D:\a\1.txt
2.如果add的是文件夹(例如:D:\a),则默认把该文件夹下未纳入svn的文件一并纳入控制
svn add D:\a
等价于
cd /d D:\a
svn add .
:: .代表当前目录
如果目录已在svn中,也可以使用下面方法(这种不会将目录add进去,所以如果是新目录的话,会报错 Can't find parent directory's node)
cd /d D:\a
svn add *
:: * 代表所有文件
::或者直接svn add D:\a\*
注1:若在该文件夹下有部分文件已经在svn中,add遍历到此的时候会抛出 already under version control 的警告,并且中断add,抛出错误 Could not add all targets because some targets are already versioned
注2:若在该文件夹已经在svn中,并且设置了svn:ignore文件,add的时候并不会忽略这些设置了忽略的文件,依旧会add进去
3.如果你只想添加新目录(例如:D:\a)到svn中,并不想将目录中的文件add进去,可以增加non-recursive
svn add D:\a --non-recursive
4.如果想要添加文件夹(例如:D:\a)以及其内容的时候,并且忽略svn:ignore设置的文件,可以使用--force
svn add D:\a --force
注:如果你想把svn:ignore设置的文件也add进去,并且不希望出现2方法中的警告以及报错,可以使用
svn add D:\a\* --force
等价于
svn add D:\a --no-ignore --force
Commit
svn commit -m "提交日志" 文件或文件夹路径
等价于
cd /d 文件或文件夹路径
svn commit -m "提交日志"
注1:-m 不可省略,但是参数可以为空
注2:文件夹内新增的文件不会commit上去,需要先手动使用svn add命令添加,然后在commit
注3:如果svn命令中使用到的路径中含有@符号,例如D:/a/@b/c,会报错 a peg revision is not allowed here 。需要在路径的再添加一个@来解决,D:/a/@b/c@
Update
svn update [-r 版本号] 文件路径
等价于
cd /d 文件夹路径
svn update [-r 版本号]
Revert
回退单个文件
svn revert 文件路径
回退整个文件夹
svn revert -R 文件夹路径
等价于
cd /d 文件夹路径
svn revert -R .
Delete
1.直接删除svn服务器上的文件
svn delete svn服务器的文件或文件夹路径(svn://...) -m "删除备注信息文本"
2.删除本地文件(同add一样需要commit上去),同时也不能cd到当前目录然后 svn delete . 因为当前目录被cmd进程占用无法删除。
svn delete 文件或文件夹路径
svn command to delete all locally missing files,提交删除本地所有丢失的文件。在实际开发中,可能有些文件夹的文件由第三方工具导出,每次都有可能增加新文件或者删除一些不用了的文件。我们commit的时候,增加新文件用add方法好处理,但是删除了的文件用delete就会遇见困难,因为你事先并不知道哪些文件被删除了。网上有一些简单的解决方法基本都是Linux环境下的,所以有些命令在windows下不适应,比如sed, grep等。
自己找到的一个可行方法如下,通过svn status 来找出missing的文件存在一个临时文本中,然后遍历该文本,依次delete,完后删除临时文件,commit到服务器。
cd /d 文件夹路径
svn add . --no-ignore --force
svn status | findstr /R "^!" > missing.list
for /F "tokens=2 delims= " %%A in (missing.list) do (svn delete %%A)
del missing.list
svn commit -m "更新日志"
status
svn status [-v] 文件或文件夹路径
查看文件状态,添加-v的话会显示的更加详细
第一列即为文件的状态
? | non-versioned,不在svn的控制中 |
! | missing,丢失的文件 |
M | modified,内容被修改 |
C | conflict,发生冲突 |
A | add,预定加入到版本库 |
D | delete,要删除的文件 |