1. 提交流程不同
-
SVN(集中式版本控制):
- 只有一步:
svn commit - 提交直接推送到中央服务器,立即对所有人可见。
- 本地没有完整历史。
- 只有一步:
-
Git(分布式版本控制):
- 分两步:
git commit→ 提交到本地仓库git push→ 将本地提交推送到远程仓库(如 GitHub、GitLab)
- 本地有完整历史
- 分两步:
2. 分支机制不同
-
SVN:
- 分支是通过在仓库中复制目录 实现的(例如
/trunk→/branches/feature-x)。 - 虽然底层是"廉价拷贝"(只记录差异),但在用户视角上确实像"新建文件夹"。
- 切换分支需切换工作目录路径(或重新 checkout),较重。
- 分支是通过在仓库中复制目录 实现的(例如
-
Git:
- 分支只是一个轻量级指针(指向某次提交)。
- 创建分支:
git branch feature-x(几乎瞬间完成) - 切换分支:
git checkout feature-x或git switch feature-x(本地快速切换,不改变物理目录结构) - 所有分支共用同一个工作目录,切换时文件自动更新。
总结
- SVN 的 commit 直接同步到服务器,而 Git 先在本地 commit,再 push 到远程。
- SVN 的分支是物理路径上的复制,Git 的分支是轻量级的指针,无需新建文件夹。