一、Git vs SVN 核心区别
SVN:集中式版本控制系统
所有代码和历史记录存储在中央服务器,开发者通过客户端与服务器交互(提交、更新等必须联网)。
git init
git clone https://github.com/user/repo.git
git add file.txt
git add . # 添加所有修改
git commit -m “提交说明”
git status
git log
git log --oneline --graph # 简洁版图形化历史
2. 分支管理
bash
复制
git branch feature-1
git checkout feature-1
git switch feature-1 # 新版本推荐
git checkout -b feature-1
git merge feature-1
git branch -d feature-1
git branch -D feature-1
3. 远程操作
bash
复制
git remote add origin https://github.com/user/repo.git
git push -u origin main # -u 设置默认上游分支
git pull # 相当于 git fetch + git merge
git push -f
4. 撤销与回退
bash
复制
git checkout – file.txt
git reset HEAD file.txt
git reset --soft commit_id
git reset --hard commit_id
git commit --amend
三、SVN 详细使用
svn checkout http://svn.example.com/repo/trunk
svn update
svn add file.txt
svn commit -m “提交说明”
svn status
svn diff
2. 分支与标签
SVN 通过目录结构管理分支和标签:
复制
repo/
trunk/ # 主分支
branches/ # 分支目录
tags/ # 标签目录
bash
复制
svn copy http://svn.example.com/repo/trunk
http://svn.example.com/repo/branches/feature-1
-m “创建feature-1分支”
svn switch http://svn.example.com/repo/branches/feature-1
svn copy http://svn.example.com/repo/trunk
http://svn.example.com/repo/tags/v1.0
-m “发布v1.0版本”
3. 冲突解决
bash
复制
svn update
svn resolve --accept working file.txt
svn commit -m “解决冲突”
四、使用场景建议
适合 Git 的场景:
需要频繁分支合并(如敏捷开发)
分布式团队协作(允许离线工作)
开源项目(GitHub/GitLab 生态完善)
适合 SVN 的场景:
企业内部集中式管理
对目录结构有严格规范
需要严格的权限控制(如按目录控制)
五、进阶技巧
Git
忽略文件:创建 .gitignore 文件,定义需忽略的文件模式。
储藏修改:临时保存未完成的修改:
bash
复制
git stash
git stash pop
Rebase 变基:整理提交历史(避免在公共分支使用):
bash
复制
git rebase main
SVN
忽略文件:通过 svn propedit svn:ignore . 设置目录忽略规则。
外部引用:链接其他仓库的代码:
bash
复制
svn propset svn:externals “lib http://svn.example.com/libs/trunk” .
六、迁移工具
SVN → Git:使用 git svn 工具迁移历史记录:
bash
复制
git svn clone http://svn.example.com/repo --authors-file=users.txt
Git → SVN:通过 git svn 双向同步,或手动导出代码提交。
七、常见问题
Git
提交到了错误分支:
bash
复制
git reset --hard HEAD~1 # 回退提交
git checkout correct-branch
git cherry-pick commit_id
合并冲突:手动编辑冲突文件后执行 git add 和 git commit。
SVN
锁定文件:某些文件需锁定才能编辑:
bash
复制
svn lock file.txt
svn unlock file.txt
清理失败:当操作中断时:
bash
复制
svn cleanup
通过以上内容,你已经掌握了 Git 和 SVN 的核心操作。建议在实际项目中多练习,遇到问题时善用 --help 或官方文档(如 git help commit)。