使用GitHub管理代码

开发中的实际场景

场景一:备份

小明负责的模块就要完成了,就在即将 Release 之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几个月来的努力付之东流

场景二:代码还原

这个项目中需要一个很复杂的功能,老王摸索了一个星期终于有眉目了,可是这被改得面目全非的代码已经回不到从前了。什么地方能买到哆啦 A 梦的时光机啊?

场景三:协同开发

小刚和小强先后从文件服务器上下载了同一个文件:Analysis.java。小刚在 Analysis.java 文件中的第 30 行声明了一个方法,叫 count (),先保存到了文件服务器上;小强在 Analysis.java 文件中的第 50 行声明了一个方法,叫 sum (),也随后保存到了文件服务器上,于是,count () 方法就只存在于小刚的记忆中了

场景四:追溯问题代码的编写人和编写时间!

老王是另一位项目经理,每次因为项目进度挨骂之后,他都不知道该扣哪个程序员的工资!就拿这次来说吧,有个 Bug 调试了 30 多个小时才知道是因为相关属性没有在应用初始化时赋值!可是二胖、王东、刘流和正经牛都不承认是自己干的!

版本控制器的方式

文本提取

a、集中式版本控制工具

集中式版本控制工具,版本库是集中存放在中央服务器的,team里每个人work时从中央服务器下载代码,是必须联网才能工作,局域网或互联网。个人修改后然后提交到中央版本库。

举例:SVN和CVS

b、分布式版本控制工具

分布式版本控制系统没有"中央服务器",每个人的电脑上都是一个完整的版本库,这样工作的时候,无需要联网了,因为版本库就在你自己的电脑上。多人协作只需要各自的修改推送给对方,就能互相看到对方的修改了。

举例:Git


2.3、SVN

(配图为集中式架构示意图:一台中央服务器连接多台客户端设备)


核心知识点解读💡

  1. 集中式(SVN/CVS)

    • 核心:唯一中央服务器存储所有代码版本,本地只有当前工作文件
    • 缺点:断网无法工作;服务器故障则全部数据丢失;多人提交易覆盖代码
    • 优点:权限管理简单,适合小型团队
  2. 分布式(Git)

    • 核心:每台电脑都是完整仓库,本地可离线管理版本,云端仅用于协作同步
    • 优点:离线可用、数据安全、分支灵活、适合开源/大型团队
    • 缺点:学习成本略高

两者核心区别

特性 集中式(SVN) 分布式(Git)
版本库位置 仅中央服务器 本地+远程都有完整库
网络依赖 必须联网 本地可离线,推送/拉取才需联网
安全性 服务器损坏则数据丢失 多副本,容错性强
代表工具 SVN、CVS Git

SVN

git

Git 是分布式的,Git 不需要有中心服务器,我们每台电脑拥有的东西都是一样的。我们使用 Git 并且有个中心服务器,仅仅是为了方便交换大家的修改,但是这个服务器的地位和我们每个人的 PC 是一样的。我们可以把它当做一个开发者的 pc 就可以就是为了大家代码容易交流不关机用的。没有它大家一样可以工作,只不过 "交换" 修改不方便而已。

git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众多的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991--2002 年间)。到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。

到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。他们对新的系统制订了若干目标:

速度

简单的设计

对非线性开发模式的强力支持(允许成千上万个并行开发的分支)

完全分布式

有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)

相关推荐
Python测试之道2 小时前
GitHub 实战课|Playwright MCP:让 AI 真的会用浏览器
人工智能·github
小陈运维3 小时前
GitHub Actions + Docker + ACR + GHCR 自动化构建与发布
github
miofly3 小时前
AI 智能体用 83% 字节精确匹配反编译完整游戏
开源·github
TunerT_TQ6 小时前
开源评测】openai/math 深度拆解:722 份 AI 数学手稿与 Lean 形式化的工程真相
github
W.A委员会6 小时前
PID自动整定与LLM调优项目使用说明(源码附文末)
自动化·github
m4Rk_6 小时前
【论文阅读】Agent 记忆机制(96):M3-Agent——让 Agent 从视听经历中持续形成情景与语义长期记忆
论文阅读·人工智能·学习·开源·github
粥里有勺糖7 小时前
安利一下最近用的桌面“Agent” | T3 Code
前端·github·ai编程
粥里有勺糖9 小时前
视野修炼第136期 | 前端小恐龙"Deno"被收购
前端·github·ai编程
怕浪猫9 小时前
Agent 工程化面试:从开发到部署的 5 个关键问题
面试·架构·github
高频因子挖掘机10 小时前
历史 K 线突然少一天?用交易日历、停牌信息和数据校验逐步排查
后端·github·api