東川印記

一本東川,笑看爭龍斗虎;寰茫兦者,度橫佰昧人生。

vi 和 git 还有svn

2014年5月5日星期一



vi命令
author:blog.csdn.net/xueziheng/article/details/2048054
一、Unix编辑器概述
      编辑器是使用计算机的重要工具之一,在各种操作系统中,编辑器都是必不可少的部件。Unix及 其相似的ix 操作系统系列中,为方便各种用户在各个不同的环境中使用,提供了一系列的ex编辑 器,包括 ex, edit,ed vi.其中ex,edit,ed都是行编辑器,现在已很少有人使用,Unix提 供他们的原因是考虑到满足各种用户特别是某些终端用户的需 要。值得庆幸的是,Unix提 供了全屏幕的Vi编辑器,这使我们的工作轻松不少。不少DOS用户 抱怨Vi编辑器不象 DOS下的编辑器如edit那 么好用,这是因为Vi考虑到各种用户的需要,没有使用某些通用的编辑键(在各个不同的终端机上他们的定义是不同的,在某些终端机上甚至没有这些键)。而是采用状态切换 的方法,但这只是习惯的问题,一旦你熟练的使用上了vi你就会 觉得它其实也很好用。
      虽然 Vi采用了状态切换的方法,但电脑的硬件及操作系统多种多样,某些电脑的键盘上没有特定的几 个功能键!那麽不就有某些功能不能用了?这个问题在 Unix 系统上也一样,几乎各大电脑厂商都有自己的 Unix 系统,而 vi 的操作方法也会随之有点出入。这里我们采用 PC 的 键盘来说明 vi 的操作,但在具体的环境中还要参考相应的资料,这一点是值得注意的。

二、Vi入门

(一)、进入vi
      在系统提示字符($#)下敲入vi <档 案名称>,vi 可以自动帮你载入所要编辑的文件或是开启一个新文件(如果该文件不存在或缺少文件名)。进入 vi 后 萤幕左方会出现波浪符号,凡是列首有该符号就代表此列目前是空的。

(二)、两种模式
       如上所述,vi存在两种模式:指令模式和输入模式。在指令模式下输入的按键将做为指令来处理:如输入 avi即认为 是在当前位置插入字符。而在输入模式下,vi则把输入的按键当作插入的字符来处理。指令模式切换到输入模式只需键入相应的输入命令即 可(如a,A),而要从输入模式切换到指令模式,则需在输入模式下键入ESC键, 如果不晓得现在是处於什麽模式,可以多按几次 [ESC],系统如发出哔哔声就表示已处于指令模式下了。
付:在指令模式进入输入模式的指令:
新增 (append)
a :从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。
A从光标所 在列最後面的地方开始新增资料。

插入 (insert)
i从光标所 在位置前面开始插入资料,光标後的资料随新增资料向後移动。
I :从光标所在列的第一个非空白字元前面开始插入资料。

开始 (open)
o :在光标所在列下新增一列并进入输入模式。
O: 在光标所在列上方新增一列并进入输入模式。

(三)、退出vi
      在指令模式下键入:q,:q!,:wq:x(注意:号),就 会退出vi。其中:wq:x是存盘退出,而:q是直接退出,如果文件已有新的变化,vi会提示 你保存文件而:q命令也会失效,这时你可以用:w命令保 存文件后再用:q 退出,或用:wq:x命令退出,如果你不想保存改变后的文件,你就需要用:q!命 令,这个命令将不保存文件而直接退出vi


(四)、基本编辑

       配合一般键盘上的功能键,像是方向键、[Insert] [Delete] 等等,现在你应该已经可以利用 vi 来 编辑文件了。当然 vi 还提供其他许许多多功能让文字的处理更为方便。
      何谓编辑?一般认为是文字的新增、修改以及删除,甚至包括文字区块的搬移、复制等等。先 这里介绍 vi 的如何做删除与修改。(注意:在 vi 的 原始观念里,输入跟编辑是两码子事。编辑是在指令模式下操作的, 先利用指令移动光标来定位要进行编辑的地方,然後才下指令做编辑。)

删除与修改文件的命令:
x删除光标 所在字符。
dd :删除光标所在的列。
r :修改光标所在字元,r 後接著要修正的字符。
R进入取替 换状态,新增文字会覆盖原先文字,直到按 [ESC] 回到指令模式下为止。
s删除光标 所在字元,并进入输入模式。
S删除光标 所在的列,并进入输入模式。

      其实呢,在PC上根本没有这麽麻烦!输入跟编辑都可以在输入模式下完成。例如要删除字元,直接按 [Delete] 不就得了。而插入状态与取代状态可以直接用 [Insert] 切换,犯不著用什麽指令模式的编辑指令。不过就如前面所提到的,这些指令几乎是每台终端机都能用,而不是仅仅在 PC 上。在指令模式下移动光标的基本指令是 h, j, k, l 。想来各位现在也应该能猜到只要直接用 PC 的 方向键就可以了,而且无论在指令模式或输入模式下都可以。多容易不是。当然 PC 键 盘也有不足之处。有个很好用的指令 u 可以恢复被删除的文字,而 U 指 令则可以恢复光标所在列的所有改变。这与某些电脑上的 [Undo] 按键功能相同。

三、附件:vi详细指令表

进入vi的命令
vi filename: 打开或新建文件,并将光标置于第一行首
vi +n filename:
打开文件,并将光标置于 第n行首
vi + filename:
打开文件,并将光标置于最 后一行首
vi +/pattern filename:
打开文 件,并将光标置于第一个与pattern匹配的串处
vi -r filename:
在上次正用vi编辑时 发生系统崩溃,恢复filename
vi filename....filename:
打开 多个文件,依次进行编辑

移动光标类命令
h:
光标左移一个字符
l:
光标右移一个字符
space:
光标右移一个字符
Backspace:
光标左移一个字符
k
Ctrl+p: 光标上移一行
j
Ctrl+n: 光标下移一行
Enter:
光标下移一行
w
W : 光 标右移一个字至字首
b
B : 光 标左移一个字至字首
e
E : 光 标右移一个字至字尾
):
光标移至句尾
 (:
光标移至句首
}:
光标移至段落开头
{:
光标移至段落结尾
nG:
光标移至第n行首
n+:
光标下移n
n-:
光标上移n
n$:
光标移至第n行尾
H:
光标移至屏幕顶行
M:
光标移至屏幕中间行
L:
光标移至屏幕最后行
0:
光标移至当前行首
$:
光标移至当前行尾

屏幕翻滚类命令
Ctrl+u:
向文件首翻半屏
Ctrl+d:
向文件尾翻半屏
Ctrl+f:
向文件尾翻一屏
Ctrl
b: 向 文件首翻一屏
nz:
将第n行滚至屏 幕顶部,不指定n时将当前行滚至屏幕顶部。

插入文本类命令
i:
在光标前
I:
在当前行首
a:
光标后
A:
在当前行尾
o:
在当前行之下新开一行
O:
在当前行之上新开一行
r:
替换当前字符
R:
替换当前字符及其后的字符,直至按ESC
s:
从当前光标位置处开始,以输入的文本替代指定数目的 字符
S:
删除指定数目的行,并以所输入文本代替之
ncw
nCW: 修 改指定数目的字
nCC:
修改指定数目的行

删除命令
ndwndW: 删除光标处开始及其后的n-1个字
do:
删至行首
d$:
删至行尾
ndd:
删除当前行及其后n-1
x
X: 删 除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u:
删除输入方式下所输入的文本

搜索及替换命令
/pattern:
从光标开始处向文件尾搜索pattern
?pattern:
从光标开始处向文件首搜索pattern
n:
在同一方向重复上一次搜索命令
N:
在反方向上重复上一次搜索命令
:s/p1/p2/g:
将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:
将第n1n2行中所 有p1均用p2替代
:g/p1/s//p2/g:
将文件中所有p1均用p2替换


选项设置
all
:列出所有选项设置情况
term
:设置终端类型
ignorance
:在搜索中忽略大小写
list
:显示制表位(ctrl+i)和行尾标志($)
number
:显示行号
report
:显示由面向行的命令修改过的数目
terse
:显示简短的警告信息
warn
:在转到别的文件时若没保存当前文件则显示no write信息
nomagic
:允许在搜索模式中,使用前面不带"/"的特 殊字符
nowrapscan
:禁止vi在搜索 到达文件两端时,又从另一端开始
mesg
:允许vi显示其 他用户用write写到自己终端上的信息

最后行方式命令
n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
n1,n2 d :将n1行到n2行之间的内容删除
w :保 存当前文件
e filename:打开文件filename进行编辑
x:保存当 前文件并退出
q:退出vi
q!:不保 存文件并退出vi
!command:执行shell命令command
n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1n2,则表 示将整个文件内容作为command的输入
r!command:将命令command的输出结果放到当前行
寄存器操作
"?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字 母,n为一个数字
"?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字 母,n为一个数字
"?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字 母,n为一个数字
"?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄 存器中。

git命令速查

author:blog.csdn.net/ithomer/article/details/7529841
一、 Git 常用命令速查
git branch 查看本地所有分支
git status 查看当前状态
git commit 提交
git branch -a 查看所有的分支
git branch -r 查看远程所有分支
git commit -am "init" 提交并且加注释
git remote add origin git@192.168.1.119:ndshow
git push origin master 将文件给推到服务器上
git remote show origin 显示远程库origin里的资源
git push origin master:develop
git push origin master:hb-dev 将 本地库与服务器上的库进行关联
git checkout --track origin/dev 切换到远程dev分支
git branch -D master develop 删除本地库develop
git checkout -b dev 建立一个新的本地分支dev
git merge origin/dev 将分支dev与当前分支进行合并
git checkout dev 切换到本地dev分支
git remote show 查看远程库
git add .
git rm 文件名(包括路径) 从git中删除指定文件
git clone git://github.com/schacon/grit.git 从服务器上将代码给拉下来
git config --list 看所有用户
git ls-files 看已经被提交的
git rm [file name] 删除一个文件
git commit -a 提交当前repos的所有的改变
git add [file name] 添加一个文件到git index
git commit -v 当你用-v参数的时候可以看commit的差异
git commit -m "This is the message describing the commit" 添加commit信息
git commit -a -a是代表add,把所有的change加到git index里然后再commit
git commit -a -v 一般提交命令
git log 看你commit的日志
git diff 查看尚未暂存的更新
git rm a.a 移除文件(从暂存区和工作区中删除)
git rm --cached a.a 移除文件(只从暂存区中删除)
git commit -m "remove" 移除文件(从Git中删除)
git rm -f a.a 强行移除修改后文件(从暂存区和工作区中删除)
git diff --cached 或 $ git diff --staged 查看尚未提交的更新
git stash push 将文件给push到一个临时空间中
git stash pop 将文件从临时空间pop下来
---------------------------------------------------------
git remote add origin git@github.com:username/Hello-World.git
git push origin master 将本地项目给提交到服务器中
-----------------------------------------------------------
git pull 本地与服务器端同步
-----------------------------------------------------------------
git push (远程仓库名) (分支名) 将本地分支推送到服务器上去。
git push origin serverfix:awesomebranch
------------------------------------------------------------------
git fetch 相当于是从远程获取最新版本到本地,不会自动merge
git commit -a -m "log_message" (-a是提交所有改动,-m是加入log信息) 本地修改同步至服务器端 :
git branch branch_0.1 master 从主分支master创建branch_0.1分支
git branch -m branch_0.1 branch_1.0 将branch_0.1重命名为branch_1.0
git checkout branch_1.0/master 切换到branch_1.0/master分支
du -hs

git branch 删除远程branch
git push origin :branch_remote_name
git branch -r -d branch_remote_name

-----------------------------------------------------------
初始化版本库,并提交到远程服务器端
mkdir WebApp
cd WebApp
git init 本地初始化
touch README
git add README 添加文件
git commit -m 'first commit'
git remote add origin git@github.com:daixu/WebApp.git 增加一个远程 服务器端
上面的命令会增加 URL地址为'git@github.com:daixu/WebApp.git', 名称为origin的远程服务器库,以后提交代码的时候只需要使用 origin别名即可


二、 Git 命令速查表

1、常用的Git命令
命令
简要说明
git add
添加至暂存区
git add�interactive
交互式添加
git apply
应用补丁
git am
应用邮件格式补丁
git annotate
同义词,等同于 git blame
git archive
文件归档打包
git bisect
二分查找
git blame
文件逐行追溯
git branch
分支管理
git cat-file
版本库对象研究工具
git checkout
检出到工作区、切换或创建分支
git cherry-pick
提交拣选
git citool
图形化提交,相当于 git gui 命令
git clean
清除工作区未跟踪文件
git clone
克隆版本库
git commit
提交
git config
查询和修改配置
git describe
通过里程碑直观地显示提交ID
git diff
差异比较
git difftool
调用图形化差异比较工具
git fetch
获取远程版本库的提交
git format-patch
创建邮件格式的补丁文件。参见 git am 命令
git grep
文件内容搜索定位工具
git gui
基于Tcl/Tk的 图形化工具,侧重提交等操作
git help
帮助
git init
版本库初始化
git init-db*
同义词,等同于 git init
git log
显示提交日志
git merge
分支合并
git mergetool
图形化冲突解决
git mv
重命名
git pull
拉回远程版本库的提交
git push
推送至远程版本库
git rebase
分支变基
git rebase�interactive
交互式分支变基
git reflog
分支等引用变更记录管理
git remote
远程版本库管理
git repo-config*
同义词,等同于 git config
git reset
重置改变分支"游 标"指向
git rev-parse
将各种引用表示法转换为哈希值等
git revert
反转提交
git rm
删除文件
git show
显示各种类型的对象
git stage*
同义词,等同于 git add
git stash
保存和恢复进度
git status
显示工作区文件状态
git tag
里程碑管理

2、对象库操作相关命令
命令
简要说明
git commit-tree
从树对象创建提交
git hash-object
从标准输入或文件计算哈希值或创 建对象
git ls-files
显示工作区和暂存区文件
git ls-tree
显示树对象包含的文件
git mktag
读取标准输入创建一个里程碑对象
git mktree
读取标准输入创建一个树对象
git read-tree
读取树对象到暂存区
git update-index
工作区内容注册到暂存区及暂存区 管理
git unpack-file
创建临时文件包含指定 blob 的内容
git write-tree
从暂存区创建一个树对象

3、引用操作相关命令
命令
简要说明
git check-ref-format
检查引用名称是否符合规范
git for-each-ref
引用迭代器,用于shell编 程
git ls-remote
显示远程版本库的引用
git name-rev
将提交ID显示为 友好名称
git peek-remote*
过时命令,请使用 git ls-remote
git rev-list
显示版本范围
git show-branch
显示分支列表及拓扑关系
git show-ref
显示本地引用
git symbolic-ref
显示或者设置符号引用
git update-ref
更新引用的指向
git verify-tag
校验 GPG 签 名的Tag

4、版本库管理相关命令
命令
简要说明
git count-objects
显示松散对象的数量和磁盘占用
git filter-branch
版本库重构
git fsck
对象库完整性检查
git fsck-objects*
同义词,等同于 git fsck
git gc
版本库存储优化
git index-pack
从打包文件创建对应的索引文件
git lost-found*
过时,请使用 git fsck �lost-found 命令
git pack-objects
从标准输入读入对象ID, 打包到文件
git pack-redundant
查找多余的 pack 文 件
git pack-refs
将引用打包到 .git/packed-refs 文件中
git prune
从对象库删除过期对象
git prune-packed
将已经打包的松散对象删除
git relink
为本地版本库中相同的对象建立硬 连接
git repack
将版本库未打包的松散对象打包
git show-index
读取包的索引文件,显示打包文件 中的内容
git unpack-objects
从打包文件释放文件
git verify-pack
校验对象库打包文件

5、数据传输相关命令
命令
简要说明
git fetch-pack
执行 git fetch 或 git pull 命令时在本地执行此命令,用于从其他版本库获取缺失的对象
git receive-pack
执行 git push 命 令时在远程执行的命令,用于接受推送的数据
git send-pack
执行 git push 命 令时在本地执行的命令,用于向其他版本库推送数据
git upload-archive
执行 git archive �remote 命令基于远程版本库创建归档时,远程版本库执行此命令传送归档
git upload-pack
执行 git fetch 或 git pull 命令时在远程执行此命令,将对象打包、上传

6、邮件相关命令
命令
简要说明
git imap-send
将补丁通过 IMAP 发 送
git mailinfo
从邮件导出提交说明和补丁
git mailsplit
将 mbox 或 Maildir 格式邮箱中邮件逐一提取为文件
git request-pull
创建包含提交间差异和执行 PULL操作地址的信息
git send-email
发送邮件

7、协议相关命令
命令
简要说明
git daemon
实现Git协议
git http-backend
实现HTTP协议 的CGI程序,支持智能HTTP协议
git instaweb
即时启动浏览器通过 gitweb 浏览当前版本库
git shell
受限制的shell, 提供仅执行Git命令的SSH访问
git update-server-info
更新哑协议需要的辅助文件
git http-fetch
通过HTTP协议 获取版本库
git http-push
通过HTTP/DAV协 议推送
git remote-ext
由Git命令调 用,通过外部命令提供扩展协议支持
git remote-fd
由Git命令调 用,使用文件描述符作为协议接口
git remote-ftp
由Git命令调 用,提供对FTP协议的支持
git remote-ftps
由Git命令调 用,提供对FTPS协议的支持
git remote-http
由Git命令调 用,提供对HTTP协议的支持
git remote-https
由Git命令调 用,提供对HTTPS协议的支持
git remote-testgit
协议扩展示例脚本

8、版本库转换和交互相关命令
命令
简要说明
git archimport
导入Arch版本 库到Git
git bundle
提交打包和解包,以便在不同版本 库间传递
git cvsexportcommit
将Git的一个提 交作为一个CVS检出
git cvsimport
导入CVS版本库 到Git。或者使用 cvs2git
git cvsserver
Git的CVS协议模拟器,可供CVS命令访问Git版本库
git fast-export
将提交导出为 git-fast-import 格式
git fast-import
其他版本库迁移至Git的 通用工具
git svn
Git 作为前端操作 Subversion

9、合并相关的辅助命令
命令
简要说明
git merge-base
供其他脚本调用,找到两个或多个 提交最近的共同祖先
git merge-file
针对文件的两个不同版本执行三向 文件合并
git merge-index
对index中的 冲突文件调用指定的冲突解决工具
git merge-octopus
合并两个以上分支。参见 git merge 的octopus合并策略
git merge-one-file
由 git merge-index 调用的标准辅助程序
git merge-ours
合并使用本地版本,抛弃他人版 本。参见 git merge 的ours合并策略
git merge-recursive
针对两个分支的三向合并。参见 git merge 的recursive合并策略
git merge-resolve
针对两个分支的三向合并。参见 git merge 的resolve合并策略
git merge-subtree
子树合并。参见 git merge 的 subtree 合并策略
git merge-tree
显式三向合并结果,不改变暂存区
git fmt-merge-msg
供执行合并操作的脚本调用,用于 创建一个合并提交说明
git rerere
重用所记录的冲突解决方案

10、 杂项
命令
简要说明
git bisect�helper
由 git bisect 命 令调用,确认二分查找进度
git check-attr
显示某个文件是否设置了某个属性
git checkout-index
从暂存区拷贝文件至工作区
git cherry
查找没有合并到上游的提交
git diff-files
比较暂存区和工作区,相当于 git diff �raw
git diff-index
比较暂存区和版本库,相当于 git diff �cached �raw
git diff-tree
比较两个树对象,相当于 git diff �raw A B
git difftool�helper
由 git difftool 命令调用,默认要使用的差异比较工具
git get-tar-commit-id
从 git archive 创 建的 tar 包中提取提交ID
git gui�askpass
命令 git gui 的 获取用户口令输入界面
git notes
提交评论管理
git patch-id
补丁过滤行号和空白字符后生成补 丁唯一ID
git quiltimport
将Quilt补丁 列表应用到当前分支
git replace
提交替换
git shortlog
对 git log 的 汇总输出,适合于产品发布说明
git stripspace
删除空行,供其他脚本调用
git submodule
子模组管理
git tar-tree
过时命令,请使用 git archive
git var
显示 Git 环 境变量
git web�browse
启动浏览器以查看目录或文件
git whatchanged
显示提交历史及每次提交的改动
git-mergetool�lib
包含于其他脚本中,提供合并/差 异比较工具的选择和执行
git-parse-remote
包含于其他脚本中,提供操作远程 版本库的函数
git-sh-setup
包含于其他脚本中,提供 shell 编程的函数库

svn常用命令
author:blog.csdn.net/ithomer/article/details/6187464
一、 SVN常用命令
1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
简写:svn co

2、往版本库中添加新的文件
svn add file

3、将改动的文件提交到版本库
svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保持锁,就使用�no-unlock开关)
简写:svn ci

4、加锁/解锁
svn lock -m "LockMessage" [--force] PATH
svn unlock PATH

5、更新到某个版本
svn update -r m path
简写:svn up

6、查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
2)svn status -v path(显示文件和子目录状态)
简写:svn st

7、删除文件
svn delete path -m "delete test fle"
简写:svn (del, remove, rm)

8、查看日志
svn log path

9、查看文件详细信息
svn info path

10、比较差异
svn diff path(将修改的文件与基础版本比较)
svn diff -r m:n path(对版本m和版本n比较差异)
简写:svn di

11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path

12、SVN 帮助
svn help
svn help ci



二、 SVN不常用命令
13、版本库下的文件和目录列表
  svn list path    显示path目录下的所有属于版本库的文件和目录简写:svn ls

14、创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法: 
1、mkdir PATH...
每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增调度,以待下一次的提交。
2、mkdir URL... 创建版本控制的目录。 
每个以URL指定的目录,都会透过立即提交于仓库中创建。在这两 个情况下,所有的中间目录都必须事先存在。

15、恢复本地修改
svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。
用法: revert PATH... 注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录

16、代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法: 
1、switch URL [PATH]        
更新你的工作副本,映射到一个新的URL,其行为跟"svn update"很像,也会将      服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的方法。 
2、switch --relocate FROM TO [PATH...]   
改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓 库的根URL变动     (比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用     这个命令更新工作副本与仓库的对应关系。

17、解决冲突
svn resolved: 移除工作副本的目录或文件的"冲突"状态。
用法: resolved PATH... 注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让 PATH 可以再次提交。

18、输出指定文件或URL的内容。
svn cat 目标[@版本]...如果指定了版本,将从指定的版本开始查找。 svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)



三、 SVN其它命令
虽然不像本章先前讨论过的那些命令那么常用,但是有时你也需要这些命令。

svn cleanup
当 Subversion修改你的工作副本时(或者任何在.svn中的信息),它尝试尽可能做到安全。在改变一个工作副本 前,Subversion把它的意 图写到一个日志文件中。接下来它执行日志文件中的命令来应用要求的修改。最后,Subversion删除日志文件。从架构上来说,这与一个日志文件系统 (journaled filesystem)类似。如果一个 Subversion操作被打断(例如,进程被杀掉了,或机器当掉了)了,日志文件仍在硬盘上。重新执行日志文件,Subversion可以完成先前开始 的操作,这样你的工作副本能回到一个可靠的状态。

以下是svn cleanup所做的:它搜索你的工作副本并执行所有遗留的日志,在这过程中删除锁。如果Subversion曾告诉你你的工作副本的一部分被"锁定" 了,那么你应该执行这个命令。另外, svn status会在锁定的项前显示L。

$ svn status
L    somedir
M   somedir/foo.c

$ svn cleanup
$ svn status
M      somedir/foo.c

svn import
使用svn import是把未版本化的文件树复制到资料库的快速办法,它需要创建一个临时目录。

$ svnadmin create /usr/local/svn/newrepos
$ svn import mytree file:///usr/local/svn/newrepos/some/project
Adding         mytree/foo.c
Adding         mytree/bar.c
Adding         mytree/subdir
Adding         mytree/subdir/quux.h

Committed revision 1.

上面的例子把在some/project目录下mytree目录的内容复制到资料库中。

$ svn list file:///usr/local/svn/newrepos/some/project
bar.c
foo.c
subdir/

注意在导入完成后,原来的树没有被转化成一个工作副本。为了开始工作,你仍然需要svn checkout这个树的一个新的工作副本。


四、SVN 常用命令一览表
命令 功能 使用格式
checkout 检出 svn  co  URL
up 更新到当前URL的末端 svn  up
switch 更新到某一tag/branch svn  switch  (tag/ 分支)URL
add 增加 svn  add  文件名
rm 删除文件 svn  rm 文件名
删除目录 svn  rm 目 录名
diff 与base版本(最后 检出或者更新到的版本)对比 svn  diff
与版本库中最新版本对比 svn  diff  -r  head
当前工作副本,两个版本之间对比 svn  diff  -r  reversion1:reversion2
版本库中任意两个tag做对比 svn   diff    (tag1)URL    (tag2)URL
ci 提交 svn ci -m "commit log"
log 查看当前工作副本log svn  log
只查看指定版本的log svn  log  -r
打印log所有附加信息 svn  log  -v
查看当前tag/branch版本详情 svn  log --stop-on-copy -v
info 查看当前工作副本所在 URL svn  info
status 查看工作副本的状态 svn st
查看文件的taglist svn 命令不支持,可执行cs taglist
tag 新增tag svn cp . (tag)URL
删除tag svn rm (tag)URL -m "commit log"
覆盖已经存在的tag 不支 持
分支开发 创建branch svn  cp  (基 线版本)URL (分支)URL  -m "commit log"
删除branch svn rm (分支)URL   -m "commit log"
同步 svn co (主干)URL
cd ~/wc
svn merge (主干)URL (待同步tag)URL
svn ci -m "commit log"
svn cp (主干)URL (以_PD_BL_MAIN结尾的tagURL -m"commit log"
合并 svn co (合并目标)URL
cd ~/wc
svn merge (基线版本tag)URL  (上线tag)URL
svn ci -m "commit log"
svn cp (合并目标)URL (上线tag_MERGE_的tag对应)URL -m"commit log"


SVN实例
删除目录下所有的 .svn 隐藏子目录
find . -name ".svn" -print0 | xargs -0 rm -rf

tags打分支
svn  cp  trunk/    tags/platform_2011.11.11    (或 svn  cp  http://192.168.1.100/platform/trunk/    http://192.168.1.100/platform/tags/platform_2011.11.11
svn  ci  -m  "svn  cp  trunk/    tags/platform_2011.11.11"         // 提交,并给出提交记录(-m  "svn  cp  trunk/    tags/platform_2011.11.11")

svn 改名
svn  mv  platform_2011.11.11   platform_20111111
svn  ci  -m  "svn  mv  platform_2011.11.11   platform_20111111"        // 提交

svn directory is missing
1) svn up missingDirName
2) svn del missingDirName
3) svn ci

svn chech version
svn  co  http://192.168.1.100/platform/branch  -r  12  platform_branch_v12

svn log
svn  log  http://192.168.1.100/platform/branch  -l10              // svn  文字注释log
svn  log  http://192.168.1.100/platform/branch  -l10  -v          // svn 文字注释log + 文件更新log(增,删,改)

svn diff -r  v_1 : v_2 svn_path
svn diff -r 200:201 test.php

查看svn版本
svnserve --version

ubuntu 安装svn 1.7、1.8
当前 ubuntu 12.04 中的 svn 版本为 1.6,这个版本会在每个子目录新建一个.svn 的目录保存版本文件,很不爽。找到一个第三方编译的 ubuntu 源:

1) 打开source.list源:
sudo vi /etc/apt/sources.list   
2) 添加源
deb http://ppa.launchpad.net/dominik-stadler/subversion-1.7/ubuntu precise main
deb-src http://ppa.launchpad.net/dominik-stadler/subversion-1.7/ubuntu precise main



3) 执行安装命令
sudo apt-get install subversion



git 思维导图,使用简介,命令大全等辅助工具存于360Y,

git 介绍,这本书不错http://git-scm.com/book/zh

--
senRsl
2014-05-05 10:52
GMT+8 @Beijing Tongzhou

1 条评论