区别:

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