跳至主要内容
工具记录约 9 分钟

Git 与 GitHub 核心概念及用法

从仓库、提交、分支与 HEAD 出发,整理远程协作、Pull Request、Rebase、Stash 等 Git 实践。

#Git#GitHub#版本控制#协作开发
本文目录
  1. 一、Git 与 Github 概述
  2. 1.1 什么是 Git
  3. 1.2 什么是 Github
  4. 1.3 本地仓库 vs 远端仓库
  5. 二、准备工作
  6. 三、Git 核心概念
  7. 3.1 Git Init(初始化)
  8. 3.2 Git Ignore(忽略文件)
  9. 3.3 Commit(提交)
  10. 3.4 Branch(分支)
  11. 3.5 HEAD(头指针)
  12. 3.6 Work Tree(工作树)
  13. 3.7 Merge Conflict(合并冲突)
  14. 四、Git 分区与同步操作
  15. 4.1 四个分区
  16. 4.2 核心同步命令
  17. 五、远端仓库操作
  18. 5.1 绑定远端仓库的两种方式
  19. 5.2 Push 与 Pull
  20. 六、Github 网站基础用法
  21. 6.1 Repository(存储库)页面
  22. 6.2 Fork、Star、Issues
  23. 6.3 Github 快捷键
  24. 七、多人协作
  25. 7.1 Pull Request(合并请求)
  26. 7.2 协作者模式
  27. 八、Git 进阶操作
  28. 8.1 Cherry Pick(拣选提交)
  29. 8.2 Stash(临时存储)
  30. 8.3 Rebase(变基)

一、Git 与 Github 概述

Git 是一个开源免费的版本控制软件,Github 是全球最大的代码仓库托管与协作平台。

1.1 什么是 Git

Git 是世界上最多人使用的版本控制系统。当一个文件夹被 Git 管理后,就变成了一个 Git 仓库,文件夹下会生成一个 .git 子文件夹来存放版本控制信息。

1.2 什么是 Github

Github = Git + Hub(中心/集合)。它是全球最大的代码仓库托管与协作平台,开发者将 Git 仓库上传到 Github,形成代码的集合。仓库分为 公开仓库(所有人可查看)和 私有仓库(仅自己可见)。

1.3 本地仓库 vs 远端仓库

  • 本地仓库(Local Repository):运行在自己电脑上的 Git 仓库

  • 远端仓库(Remote Repository):上传到服务器上的仓库,用于备份和分享

二、准备工作

开始使用前需要完成以下准备:

  1. 安装 Git(Windows:官网下载安装包;Mac:终端执行 xcode-select --install

  2. 安装 VS Code 编辑器

  3. 注册 Github 账号

  4. 配置 SSH 密钥(使用 AI 工具如 Codex/Cloud Code 完成绑定)

三、Git 核心概念

准备就绪后,先把 Git 最核心的几个概念过一遍:从初始化仓库、提交、分支,到处理合并冲突。

3.1 Git Init(初始化)

Git Init 是使用 Git 的第一步,将一个普通文件夹变成 Git 仓库。

3.2 Git Ignore(忽略文件)

.gitignore 文件声明了仓库中哪些文件不应被 Git 管理。

  • 依赖目录(如 node_modules/):包含成千上万文件,可通过 npm install 随时下载

3.3 Commit(提交)

Commit(提交) 是版本控制的基本单元。每完成一次 commit,Git 都保存了仓库此时状态的快照,所有文件的状态都被记录下来。

Commit Message 与 Commit ID

  • Commit Message:提交摘要,描述这次提交做了什么事情

  • Commit ID:Git 通过哈希算法自动计算出的唯一标识,有长 ID 和短 ID 两种(功能完全相同),短 ID 方便记忆

三种「后悔药」

操作行为使用场景
Discard放弃未 commit 的更改文件修改还未 commit 时撤销
Reset强制回退到某个历史状态单人分支 / 改动未推送到远端时使用;多人协作分支禁止使用
Revert生成反向提交抵消某次 commit多人协作分支优先使用,安全可靠

3.4 Branch(分支)

Branch(分支) 是存储库的不同开发线。默认每个仓库都有一个 main/master 主干分支。

核心要点

  • 创建分支通过指针实现,不需要拷贝代码,非常轻量

  • 各分支上的代码修改互不影响

  • 功能开发完成后通过 Merge(合并) 将分支合并回主干

  • 合并后一般删除该分支(需先切换到其他分支再删除)

创建分支的两种方式

  1. 基于当前分支最新提交创建(默认方式)

  2. 基于任意历史提交创建(右键某次 commit → Create Branch)

3.5 HEAD(头指针)

HEAD 表示当前仓库处于哪一次 commit 上。

  • 切换到 main 分支 → HEAD 指向 main 分支最新提交

  • 切换到 feature 分支 → HEAD 指向 feature 分支最新提交

  • HEAD 不指向任何分支而指向某次历史提交 → 分离头指针(Detached HEAD)状态

3.6 Work Tree(工作树)

Work Tree(工作树) 是用 Git 创建一个新分支,然后把新分支的代码完整复制到一个新文件夹。

  • 主文件夹和分支文件夹可以并行工作,互不干扰

  • 可基于主干创建多个 work tree,各自独立开发

  • 开发完成后将 work tree 合并回主干

3.7 Merge Conflict(合并冲突)

Merge Conflict(合并冲突):当两个分支修改了同一个文件的同一行代码,Git 无法自动确认保留哪个改动。

  • 需要人工决定保留哪个分支的代码,或两个都保留

  • 在 AI 时代,可以让 AI 工具辅助解决冲突,AI 会给出选项供选择

四、Git 分区与同步操作

4.1 四个分区

分区说明
Working Directory工作区 — 电脑磁盘上的本地文件夹
Staging Area暂存区 — commit 之前的检查点,可选择性提交部分文件
Local Repository本地仓库 — commit 后文件改动提交到这里
Remote Repository远端仓库 — Github 等服务器上的仓库,用于分享和备份

4.2 核心同步命令

7c7ffd34-ad25-4be7-b696-5f26fd257067_Screenshot_2026-06-04-22-23-33-35_2332cb9b27b851b548ba47a91682926c.jpg

命令作用
git clone把远端仓库保存到本地,同时创建本地仓库和工作目录
git add + git commit把工作区改动提交到本地仓库
git push将本地仓库的改动推送到远端仓库
git pull拉取远端最新改动并合并到本地(= git fetch + git merge)
git fetch + git merge分两步同步远端代码:先获取再合并

五、远端仓库操作

5.1 绑定远端仓库的两种方式

本地仓库绑定远端仓库有两种方式:

方式一:Git Clone(从远端到本地)

  1. 在 Github 上创建新仓库(New → 填写名称 → 选择公开/私有)

  2. 复制仓库地址

  3. 在 VS Code 中点击 Clone → 粘贴地址 → 选择本地文件夹

  4. 克隆后即可在本地新增文件、commit、publish 推送到 Github

方式二:Git Push(从本地到远端)

  1. 在 VS Code 中打开已有文件夹

  2. Source Control → Initialize Repository → Commit

  3. 点击 Publish → 填写远端仓库名称 → 选择公开/私有 → 推送成功

5.2 Push 与 Pull

  • Push:将本地仓库改动推送到远端(VS Code 中点击 Sync Changes 的上箭头)

  • Pull:将远端仓库最新改动拉取并合并到本地(VS Code 中点击 Sync Changes 的下箭头)

当本地有未推送的 commit 时,按钮显示上箭头;当远端有新 commit 时,按钮显示下箭头。同步后两者处于一致状态。

远端仓库地址格式:https://github.com/[用户名]/[仓库名]

六、Github 网站基础用法

6.1 Repository(存储库)页面

Repository(存储库)是 Github 最核心的页面,包含以下模块:

  • 代码库:项目源代码,可直接查看或下载压缩包

  • README:项目说明文件,自动展示在代码库下方

  • About:项目简介、标签、开源协议

  • Releases:项目发布版本,包含版本号和打包好的软件

每个文件后面显示 commit message 和最后更新日期,可据此判断项目是否仍在维护。

6.2 Fork、Star、Issues

Fork(复刻)

把项目复制一份到自己的名下,用于学习源代码、DIY 修改、或通过 Pull Request 为开源项目贡献代码。

Star(收藏)

类似视频网站的点赞+收藏,反映项目热度。感兴趣的项目不妨给作者点一个 Star。

Issues(议题)

与项目作者讨论的区域,可提出 bug、功能建议或参与讨论。

  • Open:未解决的 bug 或正在讨论的问题

  • Closed:已解决的 bug 或已结束的讨论

6.3 Github 快捷键

快捷键功能
/快速打开 Github 搜索
T快速定位到文件搜索栏
L快速定位到行号
?打开快捷键速查表(GI = 查看 Issues,GC = 查看代码)
.(句号)打开网页版 VS Code,可直接查看和编辑代码

行号功能:选中行号后可复制代码行、复制永久链接(用于分享代码)、查看 Git Blame(每行代码的提交历史)。

七、多人协作

单人使用只是起点,Git 真正的价值在多人协作中体现。下面介绍两种常见的协作模式。

7.1 Pull Request(合并请求)

Pull Request(PR,合并请求) 是把一个分支的改动合并进另一个分支的提案,是开源协作的核心机制。

完整流程

  1. Fork:将开源项目复刻一份到自己的名下

  2. Clone:将复刻的项目克隆到本地

  3. 创建分支:在分支上修改代码(不要直接在主干修改)

  4. 同步上游:创建 PR 前先将母项目最新代码同步到自己的分支,解决冲突

  5. 推送:将改动 push 到 Github

  6. 创建 PR:选择合并方向(子项目分支 → 母项目主干),填写标题和说明

  7. Code Review:管理员审核代码,可提出修改意见

  8. 合并:管理员确认无误后点击 Merge,代码合并进主干

7.2 协作者模式

当开发者与管理员在同一公司,或管理员将开发者添加为协作者(Collaborator)时,可以省略 Fork 步骤。

流程

  1. 管理员在 Settings → Collaborators 中添加协作者

  2. 协作者在 Github 首页收件箱中确认邀请

  3. 协作者直接 clone 原项目,创建分支,修改代码,push 到远端

  4. 提交 PR 前先合并主干的最新改动

  5. 管理员审核代码后合并

八、Git 进阶操作

掌握基本流程后,还有几个进阶操作可以应对更复杂的日常场景。

8.1 Cherry Pick(拣选提交)

Cherry Pick(拣选提交):从某个分支中选择性地挑选特定的 commit 合并到另一个分支,而不是合并整个分支。

  • 适用场景:一个分支有多次提交,但只想合并其中部分提交

  • 操作方式:复制目标 commit 的 ID,告诉 AI「把这两次提交 cherry pick 进主干」

8.2 Stash(临时存储)

Stash(临时存储):将未完成、未 commit 的代码临时保存起来,以便切换分支处理其他任务。

使用场景

在 feature 分支写代码写了一半,需要紧急切换到 main 分支处理临时任务。

两种解决方案

  1. 直接 commit 半成品代码,然后切换分支

  2. 使用 Stash 临时存储 → 切换分支完成任务 → 切回原分支 → Pop 取回代码继续写

8.3 Rebase(变基)

Rebase(变基) 是 Git 的进阶操作,用于将分支的根基变更到另一个分支上。

两层理解

  1. 效果层面:可以理解为把 main 分支合并进了 feature 分支

  2. 原理层面:把 feature 分支的根基从原来的位置「移植」到 main 分支最新提交上,生成新的 commit

Rebase vs Merge

对比项Rebase
历史记录线性、干净,不会产生 Merge commit 记录
推送方式变基后必须强制推送(git push -f)
适用场景仅限个人使用的分支,多人协作分支禁止使用

(注:部分内容可能由 AI 生成)