当前位置: 首页 > news >正文

【版本控制】Git 和 GitHub 入门教程

目录

  • 0 引言
  • 1 Git与GitHub的诞生
    • 1.1 Git:Linus的“两周奇迹”,拯救Linux内核
    • 1.2 GitHub:为Git插上协作的翅膀
    • 1.3 协同进化:从工具到生态的质变
    • 1.4 关键历程时间轴(2005–2008)
  • 2 Git与GitHub入门指南
    • 2.1 Git 入门:掌握代码的"时间机器"
    • 2.2 GitHub 入门:开启云端协作之门
    • 2.3 实战演练:第一次协作全流程
    • 2.4 关键记忆卡
  • 3 同类产品
    • 3.1 与 Git 类似的版本控制工具
    • 3.2 与 GitHub 类似的代码托管平台(替代 GitHub)
    • 3.3 选择建议
      • 🛠️ **版本控制与开发工具**

请添加图片描述

  • 🙋‍♂️ 作者:海码007
  • 📜 专栏:C++专栏
  • 💥 标题:【版本控制】Git 和 GitHub 入门教程
  • ❣️ 寄语:人生的意义或许可以发挥自己全部的潜力,所以加油吧!
  • 🎈 最后:文章作者技术和水平有限,如果文中出现错误,希望大家能指正

0 引言

参考文章:廖雪峰 Git 教程

1 Git与GitHub的诞生

在如今的软件开发领域,Git与GitHub几乎已成为程序员呼吸的空气般自然的存在。但回溯它们的起源,你会发现这两者的诞生并非偶然,而是分别为了解决开发协作中两个关键层面的痛点。让我们回到历史现场,看看它们如何从零起步,重塑了代码世界的协作规则。

1.1 Git:Linus的“两周奇迹”,拯救Linux内核

2005年,Linux内核开发社区陷入一场突如其来的危机——他们原本依赖的商业版本控制系统BitKeeper,因版权争议被开发商BitMover收回了免费使用权。当时Linux内核已极其庞大,靠手工合并来自全球开发者的代码补丁,效率低下到几乎无法推进。而传统集中式工具如SVN、CVS,又因速度慢、必须联网、不符合开源精神被Linus Torvalds强烈排斥。

被逼到墙角后,Linus做了一个震惊世界的决定:他自己写一个!
他用两周时间,用C语言开发出了一套全新的分布式版本控制系统(DVCS)——这就是Git。它直指三大核心痛点:

  1. 分布式架构:每个开发者本地拥有完整仓库,支持离线提交、查看历史,不再依赖中央服务器;
  2. 高效分支管理:轻量级分支让多人并行开发成为可能,解决了“多版本维护”的地狱;
  3. 数据强一致性:通过SHA-1哈希值确保每一次提交的完整性,防止代码篡改或丢失。

短短一个月后,Linux内核代码已全面迁移至Git管理。这不仅解了燃眉之急,更无意中催生了未来十年最主流的版本控制工具。


1.2 GitHub:为Git插上协作的翅膀

Git虽强,但它在2008年之前仍面临一个关键瓶颈:缺乏高效、易用的协作平台。开发者需自建服务器托管仓库,操作复杂,且缺少代码审查、任务管理等团队工具。更关键的是,开源项目难以被广泛发现和参与。

2008年4月,Tom Preston-Werner等人推出GitHub,目标很明确:让Git的分布式能力“云化”并社交化。它重点解决了Git本身不擅长的四大问题:

  1. 中心化托管与访问控制:提供云仓库托管,支持公/私有库,并引入用户权限管理,避免Git原生缺乏的安全问题;
  2. 协作流程革命:创新性提出 Fork & Pull Request 机制——开发者可一键分叉项目→修改→发起PR→代码审查→合并,极大降低开源贡献门槛;
  3. 项目管理集成:内置Issue跟踪、Wiki文档、里程碑管理,将代码与开发流程无缝绑定;
  4. 开发者社交生态:引入Star、Follower、Trending榜单等机制,打造“代码社交网络”,让优秀项目不再埋没。

GitHub迅速吸引超过4000万开发者,托管了包括Python、jQuery等几乎所有主流开源项目,成为事实上的“开源宇宙中心”。


1.3 协同进化:从工具到生态的质变

Git与GitHub的关系,本质是引擎与平台的共生:

  • Git是本地版本控制的基石,专注高效、可靠、离线可用的代码管理;
  • GitHub则是云端协作的枢纽,将Git的能力扩展为全球化、社交化、自动化的开发流。

这种组合彻底改变了软件开发:

💡 举个例子:一个学生Fork了某AI框架(GitHub),在本地修Bug并提交(Git),再发起PR被官方合并(GitHub协作流)——整个过程无需服务器配置,却实现了全球协作。


1.4 关键历程时间轴(2005–2008)

2005年7月 │ Linus怒写Git,拯救Linux内核于BitKeeper断供危机   
2008年4月 │ GitHub上线,首创Fork+PR模型,代码社交时代开启   
2018年6月 │ 微软75亿美元收购GitHub,加速整合DevOps与AI生态   

这场始于“自救”的技术革命,最终将代码协作从封闭的小作坊,推向了开放、互联、自动化的大生产时代。而今天你我指尖每一次git commitMerge PR的动作,仍在延续这场始于2005年的进化之路 🚀。

2 Git与GitHub入门指南

掌握Git与GitHub就像获得程序员的"时空操纵术"——既能自由穿梭代码历史,又能实现全球协作。下面用最直观的方式带你上手这两个改变开发工作流的革命性工具。


2.1 Git 入门:掌握代码的"时间机器"

核心概念三分钟速懂

术语作用类比解释
仓库(Repository)存储代码历史记录的空间项目的"时光档案馆"
提交(Commit)保存代码快照的操作给当前代码拍一张"历史照片"
分支(Branch)独立开发线平行宇宙中的实验空间
暂存区(Staging)准备提交的临时区域快递打包区(选中的才发货)

新手必会五连招

# 1. 创建新仓库(初始化时光机)
git init# 2. 添加文件到暂存区(选择要存档的文件)
git add index.html  # 添加单个文件
git add .           # 添加所有修改# 3. 提交快照(拍下历史照片)
git commit -m "创建登录页面"# 4. 创建安全实验空间(开创新分支)
git checkout -b feature-login# 5. 合并分支(将实验成果并入主宇宙)
git checkout main
git merge feature-login

避坑指南

  • git status:随时查看当前状态(避免迷路)
  • git log --oneline:查看简洁历史记录(时光机导航)
  • git reset --hard HEAD~1:回退到上一个提交(时光倒流)

2.2 GitHub 入门:开启云端协作之门

四步构建你的代码星球

  1. 创建仓库

    在这里插入图片描述

在这里插入图片描述

  1. 连接本地与云端
    在这里插入图片描述

    # 复制仓库SSH/HTTPS链接
    git remote add origin https://github.com/你的账号/项目名.git
    git push -u origin main  # 首次推送建立关联
    
  2. 每日同步代码

    git pull   # 早:拉取云端最新代码
    git push   # 晚:推送本地修改
    
  3. 协作金钥匙:Pull Request
    Fork他人仓库 → 2. 本地修改 → 3. 发起PR → 4. 等待审核合并

GitHub必备功能

  • Issues:任务管理器(Bug追踪/需求收集)
  • Wiki:项目知识库(文档沉淀)
  • Actions:自动化流水线(测试/部署)
  • Insights:数据分析中心(贡献者/代码活跃度)

2.3 实战演练:第一次协作全流程

假设你要给开源项目awesome-project添加文档:

You GitHub Local VSCode Git ProjectOwner PR 1. Fork awesome-project 2. git clone 你的Fork仓库 3. 编辑docs.md文件 4. git add & commit & push 5. 点击New Pull Request 6. 代码审查+评论 7. 根据反馈修改 8. Merge合并! You GitHub Local VSCode Git ProjectOwner PR

💡 Tips:首次使用建议开启Git的图形化工具

  • VS Code内置Git支持
  • GitHub Desktop(官方可视化工具)
  • GitKraken(专业级跨平台客户端)

2.4 关键记忆卡

场景Git命令GitHub操作
开始新项目git initCreate Repository
保存进度git commit -m "..."-
上传代码git push自动同步到云端
获取他人代码git pullWatch/Fork仓库
贡献开源项目-Fork + Pull Request

掌握这些基础操作,你已经能应对90%的日常开发场景!Git如同个人时间管理器,GitHub则是团队协作的中央枢纽,两者结合就像获得了"代码宇宙的通行证"。

以下是关于与 Git 工具类似的版本控制系统,以及与 GitHub 平台类似的代码托管服务的全面整理,结合技术特性和适用场景进行分类说明:


3 同类产品

3.1 与 Git 类似的版本控制工具

此类工具主要用于代码的版本管理、分支控制、多人协作,分为 分布式集中式 两类:

  1. 分布式版本控制系统(类似 Git 的架构)
  • Mercurial (Hg):语法简洁,学习曲线平缓,适合初学者;处理大型代码库性能优异(如 Mozilla 和 Python 项目使用)。
  • Bazaar:强调灵活性与易用性,支持多种协作模型,适合小型团队或个人项目。
  • Darcs:基于“补丁理论”的独特算法,简化分支合并操作,适合追求简洁工作流的团队。
  1. 集中式版本控制系统(需连接中央服务器)
  • SVN (Subversion):经典集中式工具,适合需要频繁合并的场景(如企业传统项目)。
  • Perforce:商业级工具,擅长管理大型二进制文件(如游戏开发),支持高并发和精细权限控制。
  • TFVC (Team Foundation Version Control):微软生态专用,深度集成 Azure DevOps,适合 .NET 技术栈团队。

⚖️ 分布式 vs 集中式工具对比:

特性分布式(Git/Mercurial)集中式(SVN/Perforce)
架构本地完整仓库,支持离线操作依赖中央服务器,需联网提交
分支/合并成本轻量级,高效较重,合并冲突处理复杂
适用场景开源协作、频繁实验性开发企业级流水线、大型二进制文件管理

3.2 与 GitHub 类似的代码托管平台(替代 GitHub)

此类平台提供 Git 仓库托管、协作工具、CI/CD 等完整 DevOps 能力,分为 公有云服务自托管方案

  1. 主流公有云平台
  • GitLab:最接近 GitHub 的替代品,提供无限免费私有库 + 内置 CI/CD,支持私有化部署。
  • Bitbucket:免费支持 5 人小团队私有库,深度集成 Jira/Confluence,适合 Atlassian 生态用户。
  • Gitee(码云):国内主流平台,访问速度快,适合中文开源项目及合规性要求高的场景。
  • Azure DevOps:微软全家桶成员,无缝衔接 Azure 云服务,适合企业级 CI/CD 流水线。
  1. 轻量自托管方案(可私有化部署)
  • Gitea / Gogs:Go 语言开发,资源占用低,部署简单,适合个人或小团队私有环境。
  • GitBucket:Scala 实现的开源 GitHub 克隆,功能齐全,适合需要高度定制化的团队。
  • Phabricator:集成代码审查、任务跟踪、Wiki,适合中大型团队协作。

🌐 国内开发者常用平台:

平台核心优势适用场景
Gitee政策合规、中文社区活跃国内开源项目、企业级托管
CODING腾讯生态集成、Web IDE 支持教育机构、初创团队
Codeup(阿里云)免费容量大、阿里云无缝集成云原生项目、DevOps 自动化

📊 平台特性对比表:

平台私有部署免费私有库CI/CD 内置特色功能
GitLab完整 DevOps 流水线
Bitbucket✅(≤5人)Jira/Confluence 深度集成
Gitea⚠️(需插件)轻量级、低资源消耗
SourceForge老牌开源社区、多协议支持

3.3 选择建议

  • 需要完全控制代码与数据 → 自托管方案(GitLab CEGitea)。
  • 小团队低成本协作Bitbucket(免费私有库)或 Gitee(国内网络优化)。
  • 企业级 DevOps 流水线GitLabAzure DevOps(深度云集成)。
  • 替代 GitHub 的开源生态GitLabSourceForge(老牌社区支持)。

腾讯内部使用的工具链覆盖了开发、测试、协作、项目管理等全流程,结合自研系统与行业主流工具,形成了高效的技术生态。以下是核心工具分类及说明:


🛠️ 版本控制与开发工具

  1. UGit(自研 Git 客户端)

    • 定位:专为大型项目(尤其是游戏开发)优化,解决原生 Git 在大文件管理、高频协作中的痛点。
    • 核心功能
      • 大文件管理:内置 Git LFS 模板,支持 >4GB 文件无损传输及本地缓存加速。
      • 工蜂锁机制:针对二进制文件(如美术资源)设计文件/目录级锁,避免并行修改冲突。
      • 快速提交:无需强制更新即可提交未冲突文件,提升大型团队效率。
      • 子目录检出:仅克隆所需目录,加速大型仓库访问。
    • 适用场景:游戏开发、多仓库管理、非技术角色(如策划)协作。
  2. 工蜂
    -工蜂 ≈ 腾讯版GitHub/GitLab

相关文章:

  • 历史数据分析——辽港股份
  • Linux--vsFTP配置篇
  • Python 接口:从协议到抽象基 类(Tombola子类的测试方法)
  • Razor编程中@Helper的用法大全
  • VSCode内网安装插件
  • 【原创】基于视觉模型+FFmpeg+MoviePy实现短视频自动化二次编辑+多赛道
  • stm32-c8t6实现语音识别(LD3320)
  • 【论文阅读29】区间预测CIPM(2025)
  • 读红蓝攻防:技术与策略15手机攻击
  • 华为OD机试-正整数到Excel编号之间的转换-逻辑分析(Java 2025 A卷 100分)
  • STM32[笔记]--1.前置准备
  • DQN算法(详细注释版)
  • 实验三:VGA显示实验
  • 《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (三)数据格式
  • JDK8新特性之Lambda表达式
  • 《Windows 10下QT+OpenCV+Yolo11:AI视觉开发实战指南》
  • 【AS32系列MCU调试教程】深度解析:使用 Eclipse 调试AS32系列MCU芯片的工程搭建
  • 虚拟机时间同步
  • 【MySQL系列】MySQL 导出表数据到文件
  • 消除垃圾技术文档的思维探索
  • 淄博营销型网站建设公司/专注网站建设服务机构
  • 建设政府信息资源共享网站/百色seo外包
  • 巩义网站建设价格/百度快速排名 搜
  • 企业网站建设策划书方案范文/昆明seo关键字推广
  • 设计与制作/seo团队
  • 公司用于做网站的费用怎么做账/品牌宣传活动策划方案