版本控制软件使用
Svn
- 获取远程文件
1
2
3
4
5
6
7
8
9# 这种方式会默认吧项目下载的当前位置,链接最后的文件夹名会作为本地的项目名
svn checkout [远程地址(svn://或者http://)] --username [用户名]
# 指定项目下载位置
svn checkout [远程地址(svn://或者http://)] [本地目录绝对路径] --username [用户名]
# 明文指定用户密码
svn checkout [远程地址(svn://或者http://)] --username [用户名] --password [密码]
示例:
svn checkout svn://192.169.1.1:8001/abc/py-workspace --username zhangsan
svn checkout svn://192.169.1.1:8001/abc/py-workspace /Users/atey/PythonProject/def/ --username zhangsan
-
同步远程更新本地文件
1
2
3
4
5
6
7
8
9
10# 更新当前位置下,所有的文件到最新版
svn update
# 更新指定文件到某个版本
svn update -r [版本号] [文件名]
# 更新某个文件到最新版
svn update [文件名]
示例:
svn update
svn update -r 200 abc.py
svn update abc.py -
编辑忽略文件列表
1
2
3
4
5# 在项目目录中运行下面的命令,否则就把 . 改成对应的目录位置
svn propedit svn:ignore .
# 在弹出的文本编辑器中写入需要忽略的文件名或者文件夹,一行一个
.idea # 如果要忽略文件夹,最后不要加 / 否则忽略无效
test.txt # 忽略文件 -
查看本地文件变更状态
1
2
3
4svn status
# 标识符说明
?:不在svn的控制中(新增文件/文件夹) M:内容被修改 C:发生冲突
A:预定加入到版本库 K:被锁定 -
添加文件
1
2
3
4
5
6
7
8
9
10
11
12
13# 添加单个文件
svn add [文件名/文件夹]
# 添加某种文件
svn add [通配符匹配文件名]
# 注意 svn 无法直接 add . (跟Git有区别这里)
➜ svn add .
svn: warning: W150002: '/Users/atey/PythonProject/abc' is already under version control
svn: E200009: Could not add all targets because some targets are already versioned
svn: E200009: Illegal target for the requested operation
# 如果需要添加全部未提交可借助shell命令
svn status | awk '{if ($1 == "?") {print $2} }' | xargs svn add
# 同样批量删除
svn status | awk '{if ($1 == "!") {print $2}}' | xargs svn rm -
提交更改
注意: Svn的提交是直接提交到远程服务器,而Git的提交是提交到本地1
2
3
4
5
6# 提交文件,并注明提交说明
svn commit -m "提交备注信息文本" [文件名]
# 提交全部文件
svn commit -m "提交备注信息文本" *
# 提交更改注释从文件读取
svn ci -F comment.txt -
查看操作记录
1
2
3
4
5svn log [项目路径/远程路径]
# 查看最新的前三个版本
svn log -l 3
示例:
svn log svn://192.168.1.1:8001/abc/def -
回滚操作
-
没有提交,本地回滚
注意: svn revert本身有固有的危险,因为它的目的是放弃未提交的修改.一旦你选择了恢复,没有方法找回未提交的修改.1
2
3
4# 回滚文件
svn revert [文件名]
# 回滚文件夹
svn revert -R [文件夹名] -
已经提交
1
2
3
4
5
6
7
8
9
10
11
121. 保证目前代码为最新代码
2. 找出要回滚的版本号
3. 使用 diff 比对两个版本 svn diff -r [版本1]:[版本2] ""
4. 使用merge 开始回滚 svn merge -r [版本1]:[版本2] ""
5. 提交操作
示例:
svn update
svn log # 或者 svn log -l 3 找出最新的前三个版本
svn diff -r r28:r25 "" # 比对版本差异
svn merge -r r28:r25 "" # 回滚更新
svn diff "" # 确认回滚结果
svn commit -m "Revert revision from r28 to r25,because of ..." # 提交操作
-
-
常见错误记录
- 编辑忽略文件列表时
运行svn propedit svn:ignore .
编辑忽略文件列表,批量忽略文件或者文件夹时,出现下面的错误1
2
3
4
5svn: E205007: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and no 'editor-cmd' run-time configuration option was found
# 解决方法,指定对应的文本编辑器
编辑当前的shell文件,添加环境变量
vi ~/.bash_profile 或者 vi ~/.zshrc
export SVN_EDITOR=vim
- 编辑忽略文件列表时