参考
https://blog.csdn.net/justry_deng/article/details/82259470 # TortoiseSVN打分支、合并分支、切换分支
https://www.huliujia.com/blog/802a64152bbbe877c95c84ef2fdf3857a056b536/ # 版本控制:Git与Svn的命令对应关系
TortoiseSVN打分支、合并分支、切换分支
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 | |
git diff | svn diff | |
git diff $file | svn diff $file | |
git pull | svn update 或者 svn up | |
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 |
git show $version | svn diff -c $version | 查看某个commit的变更内容 |
git diff $version1 $version2 | svn diff -r v e r s i o n 1 : version1: 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 | 查看远程仓库信息 |
-------- | --------- | ----------- |
我们一般习惯性在创建repository仓库后,再在刚才创建的仓库里面再创建trunk、branches、tags这三个文件夹,而不是直接将项目提交到仓库的根目录下(虽然直接将项目分享到仓库的root根目录下也是可以的,但是我们一般不这么做)。主要目的是:为了给项目各个阶段,各个版本归类、分阶段存储、并行开发。
trunk文件夹: 主干,我们一般把项目提交到此文件夹里面,在trunk中开发。
branches文件夹:分支,我们一般把那些需要打分支,但是有可能会修改的项目代码,打分支到此目录。
tags文件夹:分支,我们一般把那些阶段性(如迭代各期)的项目代码,打分支到此目录。
`