svn基础知识入门总结(代码)

svn生命周期

  1. 创建版本库:create

    操作创建一个新的版本库,版本库用于存放文件,包括了每次修改的历史。

  2. 检出:checkout

    操作从版本库创建一个工作副本,作为开发者私人的工作空间,可以进行内容的修改,然后提交到版本库中。

  3. 更新:update

    操作更新版本库,将工作副本与版本库进行同步。因为版本库是整个团队共用的,当其他人提交了改动,你的工作副本就会过期。

  4. 执行变更:commit

    检出之后,可以进行添加、编辑、删除、重命名、移动文件/目录等变更操作。当最终执行了 commit 操作后,就对版本库进行了相应变更。

  5. 复查变化:status/diff

    当你对工作副本进行了一些修改后,你的工作副本就会比版本库新,在 commit 操作之前使用 status/diff 操作复查下你的修改是一个好的习惯。

  6. 修复错误:revert

    如果你对工作副本做了许多修改,当时不想要这些修改了,revert 操作可以重置工作副本的修改,恢复到原始状态。

  7. 解决冲突:merge

    合并的时候可能发生冲突,使用 merge 操作进行合并。因为 SVN 合并是以行为单位的,只要不是修改的同一行,SVN 都会自动合并,如果是同一行,SVN 会提示冲突,需要手动进行确认修改,合并代码。其中 resolve 操作可以帮助找出冲突。

  8. 提交更改:commit(添加注释)

    将文件/目录添加到待变更列表,使用 commit 操作将更改从工作副本更新到版本库,提交是添加注释说明,是个好的习惯。

具体

svn 创建

$ svnadmin create dir...

svn 检出操作

$ svn checkout svn://192.168.10.10/zinaer --username zinaer --password 123456

SVN 解决冲突

  1. 使用命令查看更改
$ svn diff
Index: hello.txt
===================================================================
--- hello.txt   (revision 3)
+++ hello.txt   (working copy)
@@ -1 +1 @@
-hello world https://skm.zinaer.com
+hello world https://skm.zinaer.com 123
  1. 尝试直接提交
$ svn commit -m 'change first'
Sending        hello.txt
Transmitting file data .done
Committing transaction...
svn: E160028: Commit failed (details follow):
svn: E160028: File '/hello.txt' iAs out of date

可以看到提交失败
3. 尝试Update再提交

$ svn update
Updating '.':
C    hello.txt
Updated to revision 4.
Summary of conflicts:
  Text conflicts: 1

svn提交

  1. 在版本库中添加一个文件
$ cat README.md
# 简明 SVN 教程
  1. 查看状态
$ svn status
?       README.md

? 代表 README.md 还没有加入版本控制中。
3. add

$ svn add README.md
A       README.md    
  1. commit
$ svn commit -m 'add README.md'
Adding         README.md
Transmitting file data .done
Committing transaction...
Committed revision 6.

提交成功…(感觉很像git)

svn版本回退

  1. 随便修改一个文件
$ svn status
M       README.md
  1. revert (恢复单个文件)
$ svn revert README.md
Reverted 'README.md'
  1. revert -R (恢复整个目录)
$ svn revert -R zinaer
  1. revert -r (恢复一个已经提交的版本)
$ svn merge -r 8:7 README.md

svn分支

svn分支本质上是主干的copy,不过分支具有版本控制功能,并且和主干相对独立,最后可以将分支合并到主干,称为一个项目。

  1. 在本地创建一个分支
$ ls
branches/  tags/  trunk/

$ svn copy trunk/ branches/zhanbai
A         branches\zhanbai
  1. 查看状态
$ svn status
A  +    branches\zhanbai
  1. 提交新的分支到版本库
 svn commit -m 'add zhanbai'
Adding         branches\zhanbai
Committing transaction...
Committed revision 9.
  1. 现在我们开始在 zhanbai 分支进行开发,创建 index.html 文件
$ cd branches/zhanbai/

$ ls
hello.txt  index.html  README.md
  1. 将 index.html 加入版本控制,并提交到版本库中
$ svn status
?       index.html

$ svn add index.html
A         index.html

$ svn commit -m 'add index.html'
Adding         index.html
Transmitting file data .done
Committing transaction...
Committed revision 10.
  1. 切换到 trunk 分支,并更新,然后将 zhanbai 分支合并到 trunk 中
$ svn merge ../branches/zhanbai/
--- Merging r10 into '.':
A    index.html
--- Recording mergeinfo for merge of r10 into '.':
 G   .
  1. 此时,trunk 中就多了 index.html 文件。然后,将合并号的 trunk 提交到版本库中
$ svn commit -m 'add index.html'
Adding         index.html
Committing transaction...
Committed revision 12.

svn标签

$ svn copy trunk/ tags/v1.0
A         tags\v1.0

将在 tags 目录下创建 v1.0 目录。

然后查看状态,提交 tag 到版本库中。

$ svn status
A  +    tags\v1.0

$ svn commit -m 'add v1.0'
Adding         tags\v1.0
Committing transaction...
Committed revision 13.

常用

  1. svn log : 用来展示svn版本、日期、路径
  2. svn diff : 用来显示特定修改的行级详细信息
  3. svn cat : 取得特定版本的某文件展示在屏幕上
  4. svn list : 显示一个目录或者版本存在的文件

猜你喜欢

转载自blog.csdn.net/qq_37768971/article/details/118493333