一、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):上传到服务器上的仓库,用于备份和分享
二、准备工作
开始使用前需要完成以下准备:
-
安装 Git(Windows:官网下载安装包;Mac:终端执行
xcode-select --install) -
安装 VS Code 编辑器
-
注册 Github 账号
-
配置 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(合并) 将分支合并回主干
-
合并后一般删除该分支(需先切换到其他分支再删除)
创建分支的两种方式
-
基于当前分支最新提交创建(默认方式)
-
基于任意历史提交创建(右键某次 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 核心同步命令

| 命令 | 作用 |
|---|---|
| git clone | 把远端仓库保存到本地,同时创建本地仓库和工作目录 |
| git add + git commit | 把工作区改动提交到本地仓库 |
| git push | 将本地仓库的改动推送到远端仓库 |
| git pull | 拉取远端最新改动并合并到本地(= git fetch + git merge) |
| git fetch + git merge | 分两步同步远端代码:先获取再合并 |
五、远端仓库操作
5.1 绑定远端仓库的两种方式
本地仓库绑定远端仓库有两种方式:
方式一:Git Clone(从远端到本地)
-
在 Github 上创建新仓库(New → 填写名称 → 选择公开/私有)
-
复制仓库地址
-
在 VS Code 中点击 Clone → 粘贴地址 → 选择本地文件夹
-
克隆后即可在本地新增文件、commit、publish 推送到 Github
方式二:Git Push(从本地到远端)
-
在 VS Code 中打开已有文件夹
-
Source Control → Initialize Repository → Commit
-
点击 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,合并请求) 是把一个分支的改动合并进另一个分支的提案,是开源协作的核心机制。
完整流程
-
Fork:将开源项目复刻一份到自己的名下
-
Clone:将复刻的项目克隆到本地
-
创建分支:在分支上修改代码(不要直接在主干修改)
-
同步上游:创建 PR 前先将母项目最新代码同步到自己的分支,解决冲突
-
推送:将改动 push 到 Github
-
创建 PR:选择合并方向(子项目分支 → 母项目主干),填写标题和说明
-
Code Review:管理员审核代码,可提出修改意见
-
合并:管理员确认无误后点击 Merge,代码合并进主干
7.2 协作者模式
当开发者与管理员在同一公司,或管理员将开发者添加为协作者(Collaborator)时,可以省略 Fork 步骤。
流程
-
管理员在 Settings → Collaborators 中添加协作者
-
协作者在 Github 首页收件箱中确认邀请
-
协作者直接 clone 原项目,创建分支,修改代码,push 到远端
-
提交 PR 前先合并主干的最新改动
-
管理员审核代码后合并
八、Git 进阶操作
掌握基本流程后,还有几个进阶操作可以应对更复杂的日常场景。
8.1 Cherry Pick(拣选提交)
Cherry Pick(拣选提交):从某个分支中选择性地挑选特定的 commit 合并到另一个分支,而不是合并整个分支。
-
适用场景:一个分支有多次提交,但只想合并其中部分提交
-
操作方式:复制目标 commit 的 ID,告诉 AI「把这两次提交 cherry pick 进主干」
8.2 Stash(临时存储)
Stash(临时存储):将未完成、未 commit 的代码临时保存起来,以便切换分支处理其他任务。
使用场景
在 feature 分支写代码写了一半,需要紧急切换到 main 分支处理临时任务。
两种解决方案
-
直接 commit 半成品代码,然后切换分支
-
使用 Stash 临时存储 → 切换分支完成任务 → 切回原分支 → Pop 取回代码继续写
8.3 Rebase(变基)
Rebase(变基) 是 Git 的进阶操作,用于将分支的根基变更到另一个分支上。
两层理解
-
效果层面:可以理解为把 main 分支合并进了 feature 分支
-
原理层面:把 feature 分支的根基从原来的位置「移植」到 main 分支最新提交上,生成新的 commit
Rebase vs Merge
| 对比项 | Rebase |
|---|---|
| 历史记录 | 线性、干净,不会产生 Merge commit 记录 |
| 推送方式 | 变基后必须强制推送(git push -f) |
| 适用场景 | 仅限个人使用的分支,多人协作分支禁止使用 |
(注:部分内容可能由 AI 生成)