版本控制: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 | 查看远程仓库信息 |
___________________________ | ____________________________________ | _____________________ |