区别:
- 关于切换分支
Git 的切换分支更像(或者说就是)切换快照(head),因为可以在同一个文件夹下使用 git checkout 来切换分支(本地代码就切换了)
svn的切换分支更像是切换文件,(好像也可以在同一个文件夹下) - 关于提交代码
Git 是要先add,再commit最后push 才能把代码推送至远程
svn是直接commit就能把代码推送至远程(也可以先add再commit) svn提交代码后,本地的版本不是最新的,需要update才是最新版本;而git是提交后,本地和远程均为最新版本 - 关于删除/新增文件
Git 删除/新增文件需要指明某一个文件删除/新增( 新增:git add 删除:git rm)
SVN 只需要将删除/新增文件直接提交即可 - 关于优/劣势:
- 版本最重要的是历史版本,而不是当前版本(文件).
- svn一旦代码服务器数据丢失,将失去所有历史版本,(除非你本地有每个版本的文件)
- git是分布式的,每次pull或者生成新的分支都会保留历史版本,也就是说代码服务器数据丢失,历史版本也会保留(只要有人pull过就会保存)
- git是每个历史版本都存储完整的文件,便于恢复,svn是存储差异文件,历史版本不可恢复
- git有一个本地仓库,所以即使你没有网络(包括局域网),你也能提交代码(到本地仓库),等有网了你再提交到代码服务器;而svn是保存文件,没有本地仓库的概念,所以没网的情况下不能提交
- 关于解决冲突: 当出现冲突后,均需要解决冲突,冲突上面部分是自己的代码,但是不同的是, git解决完冲突后直接commit就行; svn需要标记为解决(mark as merge)才能commit