直接跳到内容

Git 简介

什么是 Git

Git 是一个分布式版本控制系统 (Distributed Version Control System,DVCS),主要用于跟踪文件的变化、协作开发与版本管理。 它最初由 Linus Torvalds (Linux 之父) 在 2005 年创建,用来管理 Linux 内核的源码版本。 如今,Git 已成为几乎所有软件开发项目的标准版本控制工具。

简而言之:

Git = 记录文件变化 + 多人协作开发 + 可追溯历史 + 分支灵活。

Git 的优势

在团队开发中,单靠人工保存不同版本 (如 project_v1.zipproject_final_final.zip) 是不现实的。

优势说明
分布式架构每个开发者的电脑都是一个完整的代码仓库(含完整历史),不依赖中央服务器。
高效性能几乎所有操作都在本地完成,速度极快。
强大的分支系统创建、切换、合并分支极为轻量。
安全可靠使用 SHA-1 哈希算法保证数据完整性,不易被篡改。
协作友好配合 GitHub、GitLab、Gitee 等平台,轻松实现团队协作。

Git 的发展历史

时间事件
2002 年前Linux 内核开发使用 BitKeeper(商业版控制系统)。
2005 年BitKeeper 收回 Linux 使用授权,Linus Torvalds 开始自研 Git。
2005 年 4 月Git 初版发布,仅用 10 天开发出核心原型。
2008 年GitHub 上线,使 Git 的协作与社交开发爆发式增长。
2010 年后成为全球主流版本控制系统,几乎所有开源项目均采用 Git。

Git 核心概念详解

仓库 (Repository)

存储项目所有文件和版本历史的地方。

本地仓库结构:
/project/
  ├── .git/          # Git 数据库
  │   ├── objects/   # 存储所有数据内容
  │   ├── refs/      # 存储指向数据的指针
  │   └── HEAD       # 指向当前分支
  └── 源代码文件

工作区、暂存区、仓库

工作区 (Working Directory)    暂存区 (Staging Area)    仓库 (Repository)
      ↓                             ↓                     ↓
[ 修改文件 ]  -- git add -->  [ 准备提交 ] -- git commit --> [ 永久保存 ]
      ↑                             ↑                     ↑
[ 实际文件 ]                 [ 临时区域 ]           [ 版本历史 ]

提交 (Commit)

代码变化的快照,包含:

  • 唯一的 SHA-1 哈希 ID
  • 作者信息
  • 提交信息
  • 指向父提交的指针
提交链示意图:
C1 <-- C2 <-- C3 <-- C4
       ↑             ↑
   第一次提交     最新提交

分支 (Branch)

指向某个提交的轻量级可移动指针。

主分支开发:
          main

C1 ← C2 ← C3 ← C4

创建功能分支:
          main

C1 ← C2 ← C3 ← C4
           \
            C5 ← C6

           feature

合并 (Merge)

将不同分支的修改整合到一起。

合并前:
          main

C1 ← C2 ← C3 ← C4
           \
            C5 ← C6

           feature

合并后:
          main

C1 ← C2 ← C3 ← C4 ← M
           \       /
            C5 ← C6

远程仓库 (Remote)

托管在服务器上的仓库副本,用于团队协作。

本地与远程协作:
本地仓库        -- push/pull -->        远程仓库 (GitHub/GitLab)
      ↓                                       ↓
[ 你的修改 ]  <-- 同步代码 --> [ 团队共享代码 ]

Git 工作流程示意图

典型开发流程:

工作区       暂存区       本地仓库       远程仓库
  ↓            ↓            ↓            ↓
[修改文件]
  ├─ git add ─→ [暂存变更]
  │              ├─ git commit ─→ [新提交]
  │              │                   ├─ git push ────→ [更新远程]
  │              │                   │
  │              ←─ git reset ───┘   │
  ←─ git checkout ───────────────────┘

  ←─ git pull ─────────────────────────────┘

[查看状态] ─── git status ─→ [显示状态信息]

分支工作流示意图

Git Flow 示例:

main分支:    ○──○──○─────────○─────────────○─────○
             │  │  │         │             │     │
dev分支:      └──○──○──○──○──○─────────────○─────○
                │     │  │  │  │           │     │
feature/A:       └────○──○──┘  │           │     │
                      │        │           │     │
feature/B:             └────────○──○───────┘     │
                               │  │              │
hotfix:                         └──○──────────────┘

○ = 提交
连线 = 分支关系
Git 简介已经加载完毕