svn命令详解

拉取代码:

svn checkout svn://192.168.63.1/DV2020T --username=yanqw --password=S9lmRmv

如果是第二次则可以直接

svn checkout url

查询当前的状态:

svn st
?:代表新增文件,且未ADD,需要先Add才能提交
A:代表Add状态的文件,可直接提交
M:代表有修改的文件

如果是A/M说明他们在版本管理之中,则可以直接commit提交,如果是?则需要add进版本控制再commit,如执行:

svn add X86/trunk/SioChatDemo_CM

这里可以是文件也可以是目录
或者遍历自动添加:

svn add . --force

提交代码,这是最后一步,执行完后就已经同步到远端了:

svn commit -m "init 完成推拉流"

执行完上面这一步骤开始把本地的代码推流到svn服务器上。
或者提交子目录或子目录下的单个文件:
svn commit src/apps lib/libpthread.so.0 -m “修改了文件”

如果有成员改动并进行了新的提交,本地更新命令如下:

svn update

如果本地也进行了改动,这个命令不会覆盖本地的改动。
如果想更新一个子目录可以使用:

svn update patha/pathb

H其中pathb可以是文件也可以是目录。
如果你想从版本库中删除一个文件,你可以使用 svn delete 命令。例如,你可以使用以下命令删除文件 file1.txt:

svn delete file1.txt

删除文件后,它仍然会留在本地文件系统中,但是它已从版本库中删除。
使用 svn commit 命令将更改提交到版本库中,以使删除操作生效。例如,你可以使用以下命令将删除文件 file1.txt 的更改提交到版本库中(这时并不必须在文件家中删除这个文件也可以执行以下操作):

svn commit -m "删除了文件 file1.txt"

要在 SVN 中拉取历史版本,你可以使用 “svn update” 命令,例如:

svn update -r {REVISION}

你可以使用 “svn log” 命令来查看所有提交的版本号

svn log

你也可以使用 “svn info” 命令来查看当前版本的版本号,例如:

svn info

在 svn 中,可以使用 svn diff 命令比较两个版本之间的差异。该命令可以比较两个文件或者目录之间的差异,并生成一个差异报告。

语法格式如下:

svn diff [PATH]

其中,PATH 表示需要比较的文件或者目录的路径。如果不指定 PATH,则默认比较当前目录与基准版本之间的差异。

例如,比较版本 100 和版本 200 之间的差异,可以使用以下命令:

svn diff -r 100:200 [PATH]

其中,-r 100:200 表示比较版本号从 100 到 200 之间的差异。如果省略 PATH 参数,则默认比较当前目录与基准版本之间的差异。
此外,还可以通过 --summarize 参数以列表形式列出文件差异信息,或使用 -c 参数来查看某个版本的修改内容。
用来查看当前版本与上个版本在代码细节上的差异。

svn diff -c 100 [PATH]

当前版本与上个版本相比有哪些文件修改了。

svn diff -c 100 [PATH] --summarize

更多 svn diff 命令的用法,可以使用 svn help diff 命令查看帮助文档。

删除某个版本的方法:
在 SVN 中,删除单个版本的操作不是直接删除版本,而是使用“反向合并”(reverse merge)来将该版本的更改撤销。具体步骤如下:

确定要删除的版本号,例如,我们要删除版本号为 r123 的提交。

将 HEAD 更新到要删除版本的前一个版本,例如,如果要删除版本号为 r123,则应该更新到版本号为 r122。

svn update -r122

进行反向合并操作,将要删除的版本号的更改撤销。

svn merge -c -123 .

上述命令中,“-c”表示将指定版本的更改进行反向合并,“-123”表示要删除的版本号,点号(“.”)表示当前目录。

提交撤销操作。

svn commit -m "Reversing changes in r123."

上述命令中,“-m”表示提交时的注释信息。

完成上述操作后,版本 r123 的更改就被撤销了。请注意,该版本并没有被彻底删除,只是将其更改撤销了,历史记录中仍然可以看到该版本的记录。如果需要完全删除一个版本,需要使用 SVN 的管理员命令来实现。

冲突解决:
当您在使用svn合并分支或更新代码时,如果SVN发现冲突,则会出现类似“
冲突概要:
Text conflicts: 1
Merge conflict discovered in file”
的消息。此时,您需要解决冲突才能继续提交代码。在此过程中,您可以使用以下选项:

§ Postpone:暂时跳过此冲突,稍后再解决。这意味着您可以稍后回到这个文件并解决冲突。
(df) Show diff:显示本地和远程版本之间的差异。使用此选项可以比较本地和远程版本,并找出哪些部分发生了冲突。
(e) Edit file:手动编辑冲突文件,直接在文件中修改并解决冲突。
(m) Merge:尝试自动合并冲突。使用此选项,Subversion会尝试自动解决冲突,如果成功,文件将标记为已解决;否则,您需要手动解决冲突。
® Mark as resolved:标记文件已经解决,即使您没有实际解决冲突。使用此选项,您可以告诉Subversion文件已经解决,即使它实际上没有解决。
(s) Show all options:显示所有选项列表。
根据您的需求,您可以选择适当的选项来解决冲突,以便您可以继续进行代码提交。

切换用户:
删除目录 ~/.subversion/auth/ 下的所有文件。下一次操作svn时会提示你重新输入用户名和密码的。换成你想用的就可以了。然后系统默认会记录下来的。

你可能感兴趣的:(linux,svn,服务器,运维)