Git 与 SVN 完全指南:从集中式到分布式的版本控制

发布时间:2026/10/30 8:24:50

Git 与 SVN 完全指南:从集中式到分布式的版本控制 大家好版本控制系统是开发团队协作的基石它记录文件的变更历史支持多人协同开发。本文将系统性地讲解SVN集中式和Git分布式两大版本控制系统的核心概念与常用操作帮助你快速上手并理解两者的区别。一、版本控制概述1.1 什么是版本控制版本控制是一种记录文件变更的系统以便日后查阅特定版本的历史记录。它是团队协作开发中不可或缺的工具。1.2 SVN 与 Git 的核心区别对比项SVN集中式Git分布式仓库位置中央服务器每个本地都有完整仓库网络依赖大部分操作需要联网大部分操作离线完成分支成本较高极低分支切换快速历史记录仅存储在中央服务器本地完整历史协作方式必须与中央服务器同步可自由在本地操作后推送适用场景企业内部、权限管理严格开源项目、分布式团队一句话总结SVN 是集中式的所有操作依赖中央服务器Git 是分布式的每个人本地都有完整的仓库副本。二、Git 核心概念2.1 四大区域区域说明工作区Working Directory本地文件目录即你编写代码的地方暂存区Staging Area存放准备提交的变更也称为 Index本地仓库Local Repository提交历史存储在本地的.git目录中远程仓库Remote Repository托管在服务器上的共享仓库如 GitHub、Gitee2.2 工作流程工作区 → git add → 暂存区 → git commit → 本地仓库 → git push → 远程仓库三、Git 基础配置3.1 配置用户信息Git 需要知道提交者的身份信息。# 全局配置针对电脑上的所有项目 git config --global user.name 你的姓名 git config --global user.email 你的邮箱 # 局部配置仅针对当前项目优先级高于全局 git config user.name 项目专用姓名 git config user.email 项目专用邮箱 # 查看所有配置 git config --list3.2 初始化仓库# 将当前目录变为 Git 项目生成 .git 隐藏文件夹 git init四、Git 基本操作4.1 查看状态git status# 查看工作区和暂存区的状态 git status # 状态颜色说明 # 白色 正常 # 红色 工作区有修改未提交 # 绿色 暂存区有修改未提交4.2 添加文件git add# 将工作区的变更添加到暂存区 git add 文件名 # 添加单个文件 git add . # 添加当前目录所有变更 git add *.py # 添加所有 Python 文件4.3 撤销暂存git restore --staged# 将暂存区的内容撤销回工作区取消 git add git restore --staged 文件名 # 撤销所有暂存内容 git restore --staged .4.4 提交git commit# 从暂存区提交到本地仓库 git commit -m 提交信息 # 直接提交所有已追踪文件的变更跳过 git add git commit -a -m 提交信息4.5 查看提交日志git log# 查看提交历史详细 git log # 简洁模式一行一个提交 git log --oneline # 查看所有操作日志包含版本切换记录 git reflog4.6 版本回退git reset# 回退到指定版本保留工作区变更 git reset --soft 版本号前缀 # 回退到指定版本丢弃工作区变更谨慎使用 git reset --hard 版本号前缀不同模式对比模式工作区暂存区仓库--soft保留保留回退--mixed默认保留清除回退--hard清除清除回退五、Git 分支管理5.1 分支的核心概念分支是 Git 最强大的特性之一允许开发者在独立线上进行开发不影响主分支。# 查看所有分支* 表示当前分支 git branch # 查看所有分支包含远程分支 git branch -a # 创建新分支 git branch 分支名 # 切换分支 git switch 分支名 # 或使用旧命令 git checkout 分支名 # 创建并切换到新分支 git switch -c 分支名 # 删除分支 git branch -d 分支名 # 强制删除分支未合并时使用 git branch -D 分支名5.2 合并分支# 将目标分支合并到当前分支 git merge 目标分支名 # 示例将 dev 分支的代码合并到 main 分支 # 1. 先切换到 main 分支 git switch main # 2. 执行合并 git merge dev5.3 合并冲突解决当两个分支修改了同一文件的同一位置时Git 无法自动合并需要手动解决冲突。# 冲突文件中的标记 HEAD 当前分支的内容 被合并分支的内容 分支名 # 解决步骤 # 1. 手动编辑文件删除冲突标记保留想要的内容 # 2. 重新添加并提交 git add . git commit -m 解决冲突六、Git 与远程仓库6.1 关联远程仓库# 添加远程仓库 git remote add origin https://github.com/用户名/仓库名.git # 查看远程仓库 git remote -v # 修改远程仓库地址 git remote set-url origin 新地址6.2 推送与拉取# 推送到远程仓库 git push origin 分支名 # 首次推送时设置上游分支 git push -u origin 分支名 # 从远程仓库拉取更新 git pull origin 分支名 # 只拉取不合并查看远程变更 git fetch origin 分支名6.3 克隆仓库# 克隆远程仓库到本地 git clone 仓库地址 # 克隆指定分支 git clone -b 分支名 仓库地址七、Git 操作流程图text┌─────────────┐ git add ┌─────────────┐ git commit ┌─────────────┐ git push ┌─────────────┐ │ │ ──────────► │ │ ────────────► │ │ ───────────► │ │ │ 工作区 │ │ 暂存区 │ │ 本地仓库 │ │ 远程仓库 │ │ │ ◄────────── │ │ ◄──────────── │ │ ◄─────────── │ │ └─────────────┘ git restore └─────────────┘ git reset └─────────────┘ git pull └─────────────┘八、SVN 简介集中式8.1 SVN 的核心概念SVNSubversion是集中式版本控制系统所有版本历史存储在中央服务器上开发者需要从服务器获取代码并提交变更。8.2 SVN 常用命令命令说明svn checkout URL从服务器检出代码svn update更新本地代码到最新版本svn add 文件添加文件到版本控制svn commit -m msg提交变更到服务器svn status查看工作副本状态svn log查看提交历史svn diff查看文件变更差异svn revert撤销本地修改8.3 典型 SVN 工作流程# 1. 首次获取代码 svn checkout 仓库地址# 2. 更新最新代码 svn update 修改后会变红# 3. 修改代码后查看状态 svn status # 4. 添加新文件TortoiseSVN → Add# 5. 提交变更 svn commit8.4 SVN 与 Git 的对比总结特性SVNGit架构集中式分布式离线操作有限完整分支创建较慢极快分支合并复杂高效权限控制细粒度通过平台实现存储方式差异存储快照存储学习曲线较平缓较陡峭九、常用命令速查表Git 快速参考操作命令初始化git init查看状态git status添加文件git add .提交变更git commit -m msg查看日志git log --oneline查看操作日志git reflog回退版本git reset --hard 版本号查看分支git branch切换分支git switch 分支名创建分支git branch 分支名创建并切换git switch -c 分支名删除分支git branch -d 分支名合并分支git merge 分支名关联远程git remote add origin 地址推送git push origin 分支名拉取git pull origin 分支名克隆git clone 地址从暂存区撤销git restore --staged 文件名丢弃工作区修改git restore 文件名SVN 快速参考操作命令检出svn checkout URL更新svn update添加svn add 文件提交svn commit -m msg查看状态svn status查看日志svn log撤销修改svn revert 文件十、总结分类核心内容SVN集中式中央服务器存储所有版本checkout、update、commitGit分布式本地完整仓库add、commit、push、pullGit 四大区域工作区 → 暂存区 → 本地仓库 → 远程仓库Git 分支branch、switch、merge、branch -d版本回退git reset --hard、git reflog冲突解决手动编辑冲突文件重新addcommitSVN 适合权限管理严格的集中式开发场景Git 则凭借分布式特性和强大的分支管理能力成为开源项目和现代开发团队的首选。掌握 Git 的基本操作是每位开发者的必修课建议在实际项目中多练习逐步熟悉工作流程。如果觉得这篇内容对你有帮助欢迎收藏备用。
延伸阅读

更多相关文章

2026/10/30 8:23:06

用大数据经验做 RAG,上线第一天权限和日志把我打回原形

聊《我用大数据经验做了次 AI 项目,最先失效的是旧方法》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要接了一个医疗知识库问答的 Agent 项目,Demo 跑得很顺,业务方看着满意…

2026/10/28 2:07:06

大厂 Java 面试实录:谢飞机大战严肃面试官

大厂 Java 面试实录:谢飞机大战严肃面试官场景:互联网大厂终面。会议室里空气很冷,面试官表情更冷。谢飞机抱着简历坐下,努力把自己伪装成“懂点 Java 的人”。第一轮:Java 核心与集合 面试官:先来个简单的…

2026/10/30 8:21:21

AI人才缺口400万!高中生现在学什么,2026最新报告讲透了

本文基于《人工智能信息服务产业人才需求分析报告(2026)》,解析了AI产业的现状与未来,指出AI不是风口而是基本盘,存在400万人才缺口,尤其在芯片架构师、底层算法科学家等上游底座岗位。文章详细分析了六大岗…

2026/10/30 8:21:21

英伟达:让智能体在可验证环境中自我进化

📖标题:VERA: Scaling Verifiable Environments for Agentic co-Evolution 🌐来源:arXiv, 2610.05923v1 🛎️文章简介 🔸研究问题:如何让AI智能体在缺乏中间步骤反馈的长周期复杂任务&#xff0…

2026/10/30 8:21:21

小白程序员必学:用Prompt Engineering让AI瞬间变身“数字战友”

本文通过“超级天才”比喻解析Prompt Engineering的核心逻辑,即如何将模糊需求转化为AI可执行的高确定性指令。文章对比了坏提示词(意识流提问)与好提示词(结构化任务清单)的输出差异,并给出三套实用公式&a…

2026/10/30 8:21:21

大模型AI深度解析:小白也能看懂的技术逻辑,收藏这篇就够了!

本文用通俗语言硬核技术拆解真实案例,解析了大模型AI的底层逻辑,包括预训练、微调和推理三个步骤,并探讨了它在职场办公、内容创作、学习提升等场景中的应用。文章还讨论了大模型是否会取代人类工作的问题,指出大模型更可能取代重…

2026/10/30 8:21:21

6个AI追一张火车票退款,把议员的邮箱淹了

⚠️ 说明:本文基于公开报道整理,涉及企业与政策信息以官方发布为准。一张350英镑的火车票。 6个AI助手。 一句"我不在乎付出什么代价"。 然后,事情失控了。一、实验是怎么设计的 先交代背景。 独立AI安全研究员玛蒂尔达格林-亨利&…

2026/10/29 17:05:52

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/29 17:06:02

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/29 17:06:13

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/30 0:00:46

NCP1342高频准谐振反激控制器:从设计约束到验收的完整方案

简介:NCP1342 高频准谐振反激控制器应用介绍译文文档,面向电源设计工程师、硬件研发人员及开关电源学习者,帮助读者跨越英文原版资料的语言门槛,系统理解这款高集成度 QR Flyback 控制器的设计要点。文档围绕芯片核心特性展开&…

2026/10/30 0:00:46

NCP1342准谐振反激电源设计:从选型到验收的全流程解析

简介:这份文档面向电源设计工程师与开关电源学习者,系统梳理NCP1342高频准谐振反激控制器的应用要点,帮助读者快速理解这款高集成度离线电源变换器控制芯片的工作机制与设计方法。内容涵盖芯片核心特性、引脚功能定义、电气特性参数表、最大额…

2026/10/30 0:00:46

Web系统自动登出机制设计与实现全解析

1. 系统自动登出机制的设计初衷在各类Web应用和后台管理系统中,自动登出功能早已成为标配。这个看似简单的功能背后,实际上涉及用户安全、资源管理和体验优化的多重考量。作为从业十多年的老开发,我见过太多因为登出逻辑设计不当导致的安全事…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑