《GitHub 从入门到进阶完整教程》

GitHub 从入门到进阶完整教程

GitHub 是全球最大的基于 Git 的代码托管与协作平台,本教程从基础概念、环境搭建、核心操作到团队协作,循序渐进带你掌握 GitHub 完整使用流程。


一、基础概念:Git 与 GitHub

1. 核心区别

  • Git :一款开源的分布式版本控制系统,安装在本地电脑上,用于管理代码的版本历史、分支切换、内容追溯。
  • GitHub :基于 Git 的远程代码托管平台,提供云端仓库存储,同时支持团队协作、代码评审、开源社区等功能。

2. 核心术语

术语 含义
Repository(仓库) 存放代码和版本历史的项目文件夹,分本地仓库和远程仓库
Commit(提交) 代码版本的快照,每次提交生成唯一哈希ID,可随时回退
Branch(分支) 独立的开发线,支持并行开发互不干扰,默认主分支通常为 main
Stage(暂存区) 提交前的临时存储区,用于筛选要提交的修改
Remote(远程仓库) 托管在 GitHub 等平台的云端仓库
Pull Request(PR) 合并请求,用于分支合并前的代码评审

二、环境准备:账号与工具安装

1. 注册 GitHub 账号

  1. 访问 GitHub 官网
  2. 填写用户名、邮箱、密码完成注册
  3. 验证邮箱后即可使用基础功能

2. 安装 Git 客户端

Git 是本地操作的核心工具,必须先安装:

  • Windows :前往 Git 官网 下载安装包,默认配置一路下一步即可
  • Mac :终端执行 xcode-select --install 自动安装,或通过官网下载
  • Linux(Ubuntu/Debian) :终端执行 sudo apt install git

安装完成后,打开终端/ Git Bash,执行以下命令验证安装:

bash 复制代码
git --version

输出版本号即安装成功。

3. 配置 Git 全局信息

设置你的用户名和邮箱,用于标记提交者身份:

bash 复制代码
# 配置用户名(建议和 GitHub 用户名一致)
git config --global user.name "你的GitHub用户名"

# 配置邮箱(使用 GitHub 注册邮箱)
git config --global user.email "你的注册邮箱"

# 查看配置是否生效
git config --list

4. 配置 SSH 密钥(免密登录,推荐)

SSH 密钥可以让你本地推送代码时无需重复输入账号密码,是开发者标配:

  1. 生成密钥对

    bash 复制代码
    ssh-keygen -t ed25519 -C "你的注册邮箱"

    连续按三次回车(默认路径、无密码)即可生成。

  2. 查看公钥内容

    • Windows:cat ~/.ssh/id_ed25519.pub
    • Mac/Linux:cat ~/.ssh/id_ed25519.pub
      复制输出的全部内容。
  3. 添加到 GitHub

    打开 GitHub → 右上角头像 → Settings → 左侧 SSH and GPG keys → 点击 New SSH key

    • Title 随便填(比如"家用电脑")
    • Key 粘贴刚才复制的公钥内容
    • 点击 Add SSH key 完成
  4. 测试连接

    终端执行:

    bash 复制代码
    ssh -T git@github.com

    出现 Hi 用户名! You've successfully authenticated 即配置成功。


三、入门核心:仓库基础操作

场景1:克隆远程仓库到本地(最常用)

当 GitHub 上已有项目,你想下载到本地修改:

  1. 打开目标 GitHub 仓库,点击绿色 Code 按钮,选择 SSH 地址并复制

  2. 终端进入你想存放项目的文件夹,执行克隆命令:

    bash 复制代码
    git clone git@github.com:用户名/仓库名.git
  3. 克隆完成后,进入项目目录即可开始修改代码。

场景2:本地项目关联 GitHub 远程仓库

本地已有代码,想上传到 GitHub 新建的空仓库:

  1. 在 GitHub 上新建仓库:右上角 +New repository,填写仓库名,不要勾选初始化选项

  2. 终端进入本地项目文件夹,初始化本地 Git 仓库:

    bash 复制代码
    git init
  3. 关联远程仓库(地址替换为你新建的仓库 SSH 地址):

    bash 复制代码
    git remote add origin git@github.com:用户名/仓库名.git
  4. 后续执行提交、推送操作即可。

核心提交流程(必记)

修改代码后,从本地到远程的标准三步操作:

bash 复制代码
# 1. 将修改添加到暂存区(. 代表所有修改文件,也可指定文件名)
git add .

# 2. 提交到本地仓库,双引号内写本次修改的说明
git commit -m "feat: 新增用户登录功能"

# 3. 推送到远程仓库的 main 分支
# 首次推送加 -u 关联分支,后续直接 git push 即可
git push -u origin main

其他高频基础命令

bash 复制代码
# 查看当前仓库状态(哪些文件修改了、哪些在暂存区)
git status

# 查看具体修改了什么内容
git diff

# 查看提交历史(按 q 退出)
git log

# 拉取远程仓库的最新更新(别人提交了代码,你本地同步)
git pull

# 查看当前关联的远程仓库地址
git remote -v

四、核心能力:分支管理

分支是 Git 的灵魂,支持多人并行开发、功能隔离,保证主分支代码稳定。

常用分支命令

bash 复制代码
# 查看所有本地分支,带 * 的是当前分支
git branch

# 创建新分支(不会自动切换)
git branch 分支名

# 切换到指定分支
git switch 分支名
# 或旧版写法
git checkout 分支名

# 创建并切换到新分支(最常用)
git switch -c 分支名
# 或旧版写法
git checkout -b 分支名

# 合并指定分支到当前分支(比如在 main 分支执行,合并 dev 分支)
git merge dev

# 删除本地分支(合并完成后清理)
git branch -d 分支名

# 删除远程分支
git push origin --delete 分支名

分支开发标准流程

  1. 从主分支 main 创建开发分支:git switch -c dev-login
  2. 在新分支上编写代码、提交修改
  3. 开发完成后,切换回主分支:git switch main
  4. 先拉取主分支最新代码:git pull
  5. 合并开发分支到主分支:git merge dev-login
  6. 推送主分支到远程:git push

解决代码冲突

当两个分支修改了同一文件的同一行,合并时会触发冲突,需要手动解决:

  1. 执行 merge 后,终端提示 CONFLICT,执行 git status 找到冲突文件

  2. 打开冲突文件,会看到如下标记:

    复制代码
    <<<<<<< HEAD (当前分支的代码)
    主分支的代码内容
    =======
    待合并分支的代码内容
    >>>>>>> dev-login
  3. 手动编辑文件,保留需要的代码,删除 <<<<<<< ======= >>>>>>> 标记

  4. 保存后重新暂存、提交,冲突即解决:

    bash 复制代码
    git add .
    git commit -m "fix: 合并冲突"

五、团队协作:Fork + Pull Request 工作流

这是开源项目和多人团队最主流的协作方式,核心是"先提交申请,审核后再合并"。

完整协作流程

  1. Fork 目标仓库

    打开别人的项目仓库,点击右上角 Fork 按钮,将仓库复制到你自己的 GitHub 账号下。

  2. 克隆你自己的仓库

    从你的账号下,克隆 Fork 后的仓库到本地:

    bash 复制代码
    git clone git@github.com:你的用户名/仓库名.git
  3. 创建开发分支

    不要直接在 main 分支修改,新建功能分支开发:

    bash 复制代码
    git switch -c fix-bug-xxx
  4. 提交并推送

    修改代码后,提交并推送到你自己的远程仓库:

    bash 复制代码
    git add .
    git commit -m "fix: 修复xxxbug"
    git push origin fix-bug-xxx
  5. 发起 Pull Request(PR)

    回到你的 GitHub 仓库页面,会自动出现 Compare & pull request 按钮,点击后:

    • 填写 PR 标题和详细说明(描述你做了什么修改)
    • 确认目标仓库是原作者的仓库,目标分支是 main
    • 点击 Create pull request 提交
  6. 代码评审与合并

    原仓库维护者会审核你的代码,可能提出修改意见。审核通过后,会点击合并按钮,你的代码就会进入原项目主分支。

同步原仓库更新

原仓库有新代码提交后,需要同步到你本地的仓库:

bash 复制代码
# 1. 添加原仓库为上游远程(只需要执行一次)
git remote add upstream git@github.com:原作者用户名/仓库名.git

# 2. 拉取上游仓库的最新代码
git fetch upstream

# 3. 切换到本地 main 分支,合并上游更新
git switch main
git merge upstream/main

# 4. 推送到你自己的远程仓库
git push

六、GitHub 常用功能

  1. Issues:用于提交 Bug、功能建议、任务讨论,是项目协作的沟通工具
  2. Wiki:用于存放项目文档、使用教程、架构说明
  3. Releases:发布正式版本,可打包安装包、标注更新日志
  4. GitHub Pages:免费托管静态网站,可用于搭建个人博客、项目文档站
  5. Actions:自动化流水线工具,可实现自动测试、自动部署(CI/CD)
  6. Star / Watch / Fork
    • Star:收藏项目
    • Watch:关注项目动态,有更新会收到通知
    • Fork:复制项目到自己账号下

七、进阶技巧

1. .gitignore 文件

在仓库根目录创建 .gitignore 文件,指定不需要被 Git 追踪的文件(比如依赖包、环境变量、编译产物),示例:

复制代码
# 依赖目录
node_modules
.vendor

# 环境变量
.env
.env.local

# IDE 配置
.idea
.vscode

# 系统文件
.DS_Store
Thumbs.db

2. 版本回退

提交错误想回到之前的版本:

bash 复制代码
# 先查看提交历史,复制要回退的 commit ID
git log

# 硬回退(会丢弃回退点之后的所有修改,谨慎使用)
git reset --hard 提交ID

3. 临时暂存工作区

写到一半需要切换分支,但代码还没写完不想提交:

bash 复制代码
# 暂存当前工作区修改
git stash

# 切换分支做完其他事,回来后恢复暂存内容
git stash pop

4. 标签(Tag)

用于标记重要版本节点,比如正式发布版本:

bash 复制代码
# 创建本地标签
git tag v1.0.0

# 推送标签到远程
git push origin --tags

八、最佳实践与常见问题

开发规范

  1. 提交信息规范 :采用 类型: 描述 格式,比如
    • feat: 新增注册接口(新功能)
    • fix: 修复登录超时bug(修复问题)
    • docs: 更新README文档(文档修改)
    • style: 调整代码格式(代码样式调整)
  2. 小步提交:不要攒一大堆修改再提交,每个功能点单独提交,方便回溯
  3. 主分支保持可用:永远不在 main 分支直接开发,所有功能在分支完成后再合并
  4. 推送前先拉取git push 前先执行 git pull,减少远程冲突

常见问题

  • push 被拒绝 :大概率是远程有新代码你本地没有,先执行 git pull 同步后再推送
  • 权限 denied:检查 SSH 密钥是否配置正确,是否有该仓库的推送权限
  • 不知道怎么撤销修改
    • 工作区修改未 add:git checkout 文件名 撤销修改
    • 已 add 未 commit:git reset HEAD 文件名 撤回暂存

附件一:Git 高频命令速查表

Git 高频命令速查表

一、配置与初始化
命令 说明
git --version 查看 Git 版本
git config --global user.name "用户名" 设置全局用户名
git config --global user.email "邮箱" 设置全局邮箱
git config --list 查看所有配置
git init 在当前目录初始化本地仓库
二、暂存与提交
命令 说明
git status 查看工作区、暂存区状态
git add 文件名 将指定文件加入暂存区
git add . 将所有修改加入暂存区
git commit -m "提交说明" 提交到本地仓库
git commit -am "提交说明" 跳过 add,直接提交已追踪的文件
git log 查看提交历史(按 q 退出)
git log --oneline 精简版提交历史
git diff 查看工作区未暂存的修改
git diff --cached 查看暂存区与上一版本的差异
三、分支管理
命令 说明
git branch 查看本地分支
git branch -a 查看所有分支(本地+远程)
git branch 分支名 创建新分支
git switch 分支名 切换分支
git switch -c 分支名 创建并切换到新分支
git merge 分支名 将指定分支合并到当前分支
git branch -d 分支名 删除已合并的本地分支
git branch -D 分支名 强制删除本地分支(未合并也删)
四、远程仓库操作
命令 说明
git clone 仓库地址 克隆远程仓库到本地
git remote -v 查看关联的远程仓库
git remote add origin 仓库地址 添加远程仓库别名 origin
git push origin 分支名 推送到远程指定分支
git push -u origin 分支名 推送并关联分支,后续直接 git push
git push origin --delete 分支名 删除远程分支
git pull 拉取远程当前分支并合并
git fetch 拉取远程更新但不自动合并
五、撤销与回退
命令 说明
git checkout 文件名 撤销工作区修改(未 add)
git restore 文件名 同上,新版 Git 推荐写法
git reset HEAD 文件名 撤回暂存区(已 add 未 commit)
git reset --soft 提交ID 回退到指定提交,修改保留在暂存区
git reset --hard 提交ID 强制回退,丢弃所有后续修改(慎用)
六、临时暂存(Stash)
命令 说明
git stash 暂存当前未完成的工作
git stash list 查看所有暂存记录
git stash pop 恢复最近一次暂存并删除记录
git stash drop 删除最近一次暂存记录
git stash clear 清空所有暂存记录
七、标签(Tag)
命令 说明
git tag v1.0.0 创建本地标签
git tag -a v1.0.0 -m "版本说明" 创建带注解的标签
git tag 查看所有标签
git push origin v1.0.0 推送单个标签到远程
git push origin --tags 推送所有标签到远程

GitHub 三大核心工作流速记

1. 克隆开发流(已有远程仓库)
复制代码
git clone 地址 → 改代码 → git add . → git commit -m "说明" → git push
2. 本地项目上传流(本地代码 → 新仓库)
复制代码
GitHub 新建空仓库 → 本地 git init → git add . → git commit
→ git remote add origin 地址 → git push -u origin main
3. Fork + PR 协作流(参与开源/他人项目)
复制代码
Fork 原仓库 → 克隆自己的仓库 → 新建分支开发 → 推送自己的仓库
→ GitHub 页面发起 Pull Request → 等待原作者审核合并

同步原仓库更新:

复制代码
git remote add upstream 原仓库地址(仅一次)
→ git fetch upstream → git switch main → git merge upstream/main → git push

附件二:GitHub Pages 搭建静态网站

GitHub Pages 是 GitHub 提供的免费静态网站托管服务,可直接托管 HTML/CSS/JS 静态资源,适合搭建个人博客、项目文档、演示站点。

1. 站点类型

GitHub Pages 分为两类,区别仅在于仓库命名和访问地址:

  • 项目站点 :依附于任意普通仓库,访问地址:https://你的用户名.github.io/仓库名/
  • 用户/组织站点 :仓库名必须为 你的用户名.github.io,访问地址:https://你的用户名.github.io/(一个账号只能有一个)

2. 最简搭建:纯 HTML 项目站点

无需任何构建工具,3 分钟即可上线。

步骤 1:准备仓库与页面
  1. 在 GitHub 新建一个仓库(或使用已有仓库),比如命名为 my-demo-site

  2. 在仓库根目录新建 index.html,写入简单的网页内容:

    我的GitHub Pages站点

    Hello GitHub Pages!

    这是我的第一个静态网站。

  3. 提交并推送到远程 main 分支。

步骤 2:开启 Pages 服务
  1. 进入仓库页面,点击顶部 Settings
  2. 左侧菜单找到 Pages(在 Code and automation 分类下)
  3. Build and deploymentSource 选择 Deploy from a branch
  4. Branch 选择:main 分支,文件夹选择 / (root),点击 Save
  5. 等待 1-2 分钟,刷新页面即可看到生成的站点地址
步骤 3:访问验证

打开 https://你的用户名.github.io/my-demo-site/,即可看到你的网页。

3. 个人主页站点(username.github.io

搭建方式和上面完全一致,只有两点不同:

  1. 仓库名必须严格为 你的用户名.github.io(比如 zhangsan.github.io
  2. 访问地址直接是 https://你的用户名.github.io/,没有后缀路径

4. 进阶:绑定自定义域名

如果你有自己的域名,可以替换默认的 github.io 地址:

  1. 在仓库根目录新建 CNAME 文件(全大写,无后缀),内容只写你的域名,例如:www.example.com
  2. 提交推送到远程
  3. 去你的域名服务商后台,添加 DNS 解析:
    • 若用子域名(如 www):添加 CNAME 记录,指向 你的用户名.github.io
    • 若用根域名:添加 A 记录,指向 GitHub Pages 官方最新 IP 地址
  4. 回到仓库 Pages 设置页,勾选 Enforce HTTPS 开启强制 HTTPS

5. 常用静态生成器

GitHub Pages 原生支持静态站点生成工具,常见的有:

  • Jekyll(GitHub 官方原生支持,无需额外配置)
  • Hexo、Hugo、VitePress、Docsify 等(需配合 GitHub Actions 自动构建部署)

附件三:GitHub Actions 自动化部署实战

GitHub Actions 是 GitHub 内置的 CI/CD 自动化工具,可以在你提交代码后,自动执行构建、测试、部署等流程。

1. 核心概念

  • Workflow(工作流) :一个完整的自动化流程,对应一个 .yml 配置文件
  • Job(作业):工作流中的一个执行单元,包含多个步骤
  • Step(步骤):具体执行的命令或动作
  • Runner(运行器):执行任务的服务器,GitHub 提供免费的 Ubuntu/Windows/macOS 运行环境

工作流文件必须放在仓库的 .github/workflows/ 目录下。

2. 实战:前端项目自动构建部署到 Pages

以 Vite 构建的 Vue/React 项目为例,实现「提交代码 → 自动构建 → 自动部署到 GitHub Pages」全流程。

前置条件
  • 项目是需要构建的前端工程(有 package.json,执行 npm run build 会生成 dist 目录)
  • 仓库已推送到 GitHub
步骤 1:修改 Pages 部署源
  1. 进入仓库 Settings → Pages
  2. Source 从「Deploy from a branch」改为 GitHub Actions,保存
步骤 2:创建工作流配置文件

在项目根目录创建路径:.github/workflows/deploy-pages.yml,写入以下配置:

复制代码
# 工作流名称
name: 部署到 GitHub Pages

# 触发条件:推送到 main 分支时自动执行
on:
  push:
    branches:
      - main
  # 支持手动触发
  workflow_dispatch:

# 设置权限,允许部署 Pages
permissions:
  contents: read
  pages: write
  id-token: write

# 确保只有一个并发部署
concurrency:
  group: "pages"
  cancel-in-progress: false

jobs:
  # 1. 构建任务
  build:
    runs-on: ubuntu-latest
    steps:
      - name: 检出代码
        uses: actions/checkout@v4

      - name: 安装 Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'

      - name: 安装依赖
        run: npm ci

      - name: 构建项目
        run: npm run build

      - name: 上传构建产物
        uses: actions/upload-pages-artifact@v3
        with:
          path: ./dist

  # 2. 部署任务
  deploy:
    needs: build
    runs-on: ubuntu-latest
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    steps:
      - name: 部署到 GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4
步骤 3:项目路径适配(项目站点必做)

如果是项目站点 (地址带 /仓库名 后缀),需要在构建配置中添加基础路径,否则静态资源会 404。

以 Vite 项目为例,修改 vite.config.js,添加 base 配置:

复制代码
export default {
  // 替换为你的仓库名,前后都要有斜杠
  base: '/你的仓库名/',
  // 其他配置...
}

如果是用户站点(username.github.io),则无需修改。

步骤 4:提交并触发自动部署

将工作流文件和配置修改提交,推送到 main 分支:

复制代码
git add .
git commit -m "feat: 添加自动部署工作流"
git push

3. 查看运行状态

  1. 进入仓库页面,点击顶部 Actions 标签
  2. 可以看到正在运行或已完成的工作流
  3. 点击对应工作流可查看详细执行日志,失败时可根据报错排查问题

部署成功后,即可通过 Pages 地址访问你的网站,后续每次提交代码到 main 分支,都会自动触发重新构建部署。

4. 其他常用场景

  • 自动运行测试 :在 build 步骤中添加 npm run test,实现提交代码自动跑单测
  • 多环境部署:区分开发环境、生产环境,推送到不同分支触发不同部署
  • 发布 npm 包:打 tag 时自动发布到 npm 仓库

相关推荐
Timeless1591 小时前
Git与TortoiseGit使用教程:第二章 Git常用命令及TortoiseGit使用教程
github
用户69371750013842 小时前
深夜炸场!DeepSeek 没发新模型,却重构了整个 Agent 生态
前端·后端·github
fthux2 小时前
装闭 RenoPit 源码解析(08):多模态AI调用、重试与文本降级
人工智能·ai·开源·github·open source·renopit
笨鸟先飞,勤能补拙2 小时前
AI Agent应用领域深度解析:从概念到落地的全维度审视
大数据·人工智能·python·物联网·安全·网络安全·github
JenKinJia3 小时前
Pycharm中增加远程服务器解释器无法连接的问题
服务器·pycharm·github
xiezhr4 小时前
DeepSeek 不能识图?装个开源 Skill,纯文本模型也能"睁眼"了
github·aigc·deepseek
dong_junshuai18 小时前
每天一个开源项目#68 Needle:14MB 工具调用小模型装进口袋设备
程序员·开源·github
向上的车轮21 小时前
GitHub Actions 自动化运维实战:Rust 全栈项目 CI/CD 至华为云
运维·自动化·github