天津储鑫盛钢材现货供应商 发表于 2025-4-8 20:54:17

Git vs SVN 焦点区别

一、Git vs SVN 焦点区别

[*]架构计划
Git:分布式版本控制系统
每个开发者本地都有完整的代码仓库(包括完整历史记载),无需依靠中心服务器即可提交、分支、归并。
SVN:集中式版本控制系统
所有代码和历史记载存储在中心服务器,开发者通过客户端与服务器交互(提交、更新等必须联网)。

[*]焦点概念对比
特性 Git SVN
存储方式 每个提交生存文件快照 记载文件差异(增量存储)
分支/标签 轻量级(指针利用) 目次拷贝(较重量级)
冲突处置惩罚 本地解决冲突后提交 更新时解决冲突再提交
网络依靠 大部分利用本地完成,仅同步需网络 几乎所有利用依靠网络
速率 快(本地利用) 较慢(依靠网络)
二、Git 详细利用
[*]根本利用
bash
复制
初始化仓库

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
归并分支到当前分支(如归并到main)

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
打消暂存区修改(取消add)

git reset HEAD file.txt
回退到某个提交(保存修改)

git reset --soft commit_id
回退到某个提交(丢弃修改)

git reset --hard commit_id
修改末了一次提交的阐明

git commit --amend
三、SVN 详细利用

[*]根本利用
bash
复制
检出仓库

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
复制
创建分支(拷贝trunk到branches)

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
冲突文件会生成多个版本:

file.txt.mine (你的修改)

file.txt.rOLD (基础版本)

file.txt.rNEW (他人修改)

手动解决冲突后标志为已解决

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)。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Git vs SVN 焦点区别