版本控制:Git与Svn的命令对应关系

导言

作为一个只用过git的童鞋,因为工作需要遇见了svn。初次见面时还很羞涩,经过了一段时间的交往,我们之间的关系突飞猛进,也成功地收到了svn的“好人卡”(这是个悲伤的故事)。所以为了让和我一样的svn新童鞋能够快速收获好人卡,整理了一下git和svn各种操作的对应关系,希望可以帮助到大家。

svn简介

从使用的角度来说,svn和git的最大区别是svn是集中式版本控制,svn是分布式版本控制。svn本地保存的是远程仓库的镜像,没有本地仓库 or 本地分支的概念,所以每次commit都是直接提交到远程仓库。而git每次commit是对本地分支操作,即提交到本地仓库的某个分支,然后再将本地分支的修改同步到远程仓库。

git与svn命令对应关系

git命令 svn命令 备注
git --version svn --version 查看git or svn的版本
git clone $url svn checkout $url
或者 svn co $url
git add svn add
git status svn status svn没有自带彩色显示,哭~
git diff svn diff
git diff $file svn diff $file
git pull svn update 或者 svn up 一般说up一下就是update一下
git commit -m $comment svn不支持本地commit,commit直接push到远程仓库
git push svn不支持本地commit,所以也不存在push的概念
git commit -m $comment &&
git push
svn commit -m $comment
或者 svn ci -m $comment
git commit + push的效果和svn commit相同。git push之前需要先pull一下,对应的,svn commit之前需要update一下。
git log svn log | less 直接使用svn log会直接打印所有log,如果commit很多的话就233333
git show $version svn diff -c $version 查看某个commit的变更内容
git diff $version1 $version2 svn diff - r $version1 $version2 查看两次commit的差异
git diff $version1 $version2 $file svn diff -r $version1 $version2 $file 查看两次commit的差异,$file可以是目录或者文件
git clean -df svn st | grep ‘^?’ | awk ‘{print $2}’ | xargs rm -rf

如果svn版本大于等于1.9,还可以使用:
svn cleanup . --remove-unversioned
git checkout $file svn revert $file svn没有暂存区的概念,所以svn是从最新的版本库本地镜像里面checkout
git reset --hard HEAD svn revert . -R 完全回退到最近一次commit
git reset $version svn revert . -R &&
svn merge -r HEAD:$version
svn merge不会修改commit历史,只是用$version版本的文件覆盖当前文件。这点和git不一样
git reset --hard $version svn revert . -R &&
svn update -r $version
svn update会回退本地镜像的commit历史,远程仓库不受影响,提交前本地镜像的commit历史必须恢复到和远端一致。
git reset --hard $version &&
git push --force
svn revert . -R &&
svn merge -r HEAD:$version &&
svn commit -m $comment
svn远程仓库的commit历史是不可修改的,所以只能通过恢复$version的文件内容,并再次提交来实现伪hard reset。
git fetch svn没有本地分支的概念,所以没有和fetch对应的操作
git rm svn rm
git remote -v svn info 查看远程仓库信息
___________________________ ____________________________________ _____________________

你也可以通过我的独立博客——胡刘郏的技术博客,获取本篇文章

你可能感兴趣的:(工具使用,Git,Svn,Subversion,版本控制)