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

news2025/6/9 23:47:19

目录

  • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2405987.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于python大数据的水文数据分析可视化系统

博主介绍:高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实实在…

人工智能学习09-变量作用域

人工智能学习概述—快手视频 人工智能学习09-变量作用域—快手视频

DJango知识-模型类

一.项目创建 在想要将项目创键的目录下,输入cmd (进入命令提示符)在cmd中输入:Django-admin startproject 项目名称 (创建项目)cd 项目名称 (进入项目)Django-admin startapp 程序名称 (创建程序)python manage.py runserver 8080 (运行程序)将弹出的网址复制到浏览器中…

【Redis】笔记|第10节|京东HotKey实现多级缓存架构

缓存架构 京东HotKey架构 代码结构 代码详情 功能点:(如代码有错误,欢迎讨论纠正) 多级缓存,先查HotKey缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新…

基于规则的自然语言处理

基于规则的自然语言处理 规则方法形态还原(针对英语、德语、法语等)中文分词切分歧义分词方法歧义字段消歧方法分词带来的问题 词性标注命名实体分类机器翻译规则方法的问题 规则方法 以规则形式表示语言知识,强调人对语言知识的理性整理&am…

使用MounRiver Studio Ⅱ软件写一个CH592F芯片的ADC采集程序,碰到的问题

MounRiver Studio Ⅱ 默认是不开启浮点计算的,所以有些浮点功能不能用,碰到问题是 while (1) {DelayMs (100);tmp Read_Temperature (0);sprintf (tempBuffer, "temp:%.2f\r\n", tmp); // 格式化温度值到字符串。使用%f要开启相应的…

简约商务年终工作总结报告PPT模版分享

简约精致扁平化商务通用动画PPT模版,简约大气素雅商务PPT模版,商务PPT模版,商业计划书PPT模版,IOS风商务通用PPT模版,公司介绍企业宣传PPT模版,创业融资PPT模版,创意低多边形PPT模版&#xff0c…

深度学习学习率优化方法——pytorch中各类warm up策略

warm-up具体原理以及为什么这么做在之前的博客有介绍,这里直接介绍如何直接使用pytorch中的warm-up策略,在pytorch中对于warm-up所有支持的方法都有描述,可以直接阅读1。 深度学习中各类学习率优化方法(AdaGrad/RMSprop/Adam/Warm-UP)原理及其…

分类数据集 - 场景分类数据集下载

数据集介绍:自然场景分类数据集,真实场景高质量图片数据;适用实际项目应用:自然场景下场景分类项目,以及作为通用场景分类数据集场景数据的补充;数据集类别:buildings、forest、glacier、mounta…

leetcode.多数元素

169. 多数元素 - 力扣&#xff08;LeetCode&#xff09; import java.util.HashMap;public class LeetCode169 {public int majorityElement(int[] nums) {int count nums.length;int res count/2;Scanner scanner new Scanner(System.in);HashMap<Integer,Integer> …

Server - 使用 Docker 配置 PyTorch 研发环境

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/148421901 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 建议使…

2025年渗透测试面试题总结-腾讯[实习]安全研究员(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]安全研究员 1. 自我介绍 2. SQL二次注入原理 3. 二次注入修复方案 4. SQL注入绕WAF&#xff…

01-VMware16虚拟机详细安装

官网地址&#xff1a;https://www.vmware.com/cn.html 1.1 打开下载好的 .exe 文件&#xff0c; 双击安装。 1.2 点击下一步 1.3 先勾选我接受许可协议中的条款&#xff0c;然后点击下一步 1.4 自定义安装路径&#xff0c;注意这里的文件路径尽量不要包含中文&#xff0c;完成…

sql列中数据通过逗号分割的集合,按需求剔除部分值

前置 不会REGEXP 方法的需要在这里学习一下下 记sql字段逗号分隔&#xff0c;通过list查询 功能点 现有一个表格中一列存储的是标签的集合&#xff0c;通过逗号分割 入下&#xff1a; 其中tag_ids是逗号分割的标签&#xff0c;现在需要删除标签组中的一些标签&#xff0c;因…

下一代设备健康管理解决方案:基于多源异构数据融合的智能运维架构

导语&#xff1a; 在工业4.0深度演进的关键节点&#xff0c;传统设备管理面临数据孤岛、误诊率高、运维滞后三大致命瓶颈。本文解析基于边缘智能与数字孪生的新一代解决方案架构&#xff0c;并实测验证中讯烛龙PHM-X系统如何通过多模态感知→智能诊断→自主决策闭环&#xff0c…

深入理解JavaScript设计模式之闭包与高阶函数

目录 前言小序一场失败面试面试后的觉醒 闭包变量作用域&#xff1a;谁的地盘听谁的变量的生命周期&#xff1a;该走了&#xff0c;不该走的还在闭包的更多作用&#xff1a;不只是谈恋爱&#xff0c;还能干活&#xff01;1、封装私有变量&#xff1a;你的变量我来守护2、延长变…

springboot启动mapper找不到方法对应的xml

数据源配置 目录结构 idea中mapper.java 可以找到对应的mapper.xml文件 启动却找不到 因为mapper.db1会被识别为文件名 而非目录结构 调整为这种

MQTT协议:物联网时代的通信基石

MQTT协议&#xff1a;物联网时代的通信基石 在当今快速发展的物联网&#xff08;IoT&#xff09;时代&#xff0c;设备之间的通信变得尤为重要。MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;协议作为一种轻量级的消息传输协议&#xff0c;正逐渐成为物联…

Electron通信流程

前言 今天讲Electron框架的通信流程&#xff0c;首先我们需要知道为什么需要通信。这得益于Electron的多进程模型&#xff0c;它主要模仿chrome的多进程模型如下图&#xff1a; 作为应用开发者&#xff0c;我们将控制两种类型的进程&#xff1a;主进程和渲染器进程 。 …

华为云Flexus+DeepSeek征文|华为云Flexus服务器dify平台通过自然语言转sql并执行实现电商数据分析

目录 前言 1 华为云Flexus服务器部署Dify平台 1.1 华为云Flexus服务器一键部署Dify平台 1.2 设置账号登录Dify&#xff0c;进入平台 2 构建自然语言转SQL并执行的应用 2.1 创建应用并启动工作流设计 2.2 应用框架设计 2.3 自然语言转SQL模块详解 2.4 代码执行模块实现…