第5章:下载代码(Clone & Download)📥
看到喜欢的开源项目,当然要下载来研究!本章介绍三种下载代码的方式。
📋 目录
三种下载方式对比
| 方式 | 难度 | 能否同步更新 | 适用场景 |
|---|---|---|---|
| Download ZIP | ⭐ 最简单 | ❌ 不能 | 快速查看代码,不需要修改 |
| Git Clone | ⭐⭐ 中等 | ✅ 能 | 长期学习、修改代码、贡献开源 |
| GitHub CLI | ⭐⭐⭐ 进阶 | ✅ 能 | 频繁操作 GitHub,需要自动化 |
方式1:Download ZIP(最简单)⭐
适用场景
- ✅ 只想快速查看代码
- ✅ 不需要修改和提交
- ✅ 不熟悉 Git 命令
操作步骤
第1步:进入仓库主页
打开浏览器 → 访问 https://github.com/GTX950L/github-encyclopedia
第2步:点击绿色的 Code 按钮
┌─────────────────────┐
│ 📁 Code ▼ │ ← 点击这个按钮
└─────────────────────┘
第3步:选择 Download ZIP
弹出的菜单:
┌────────────────────────────────────┐
│ 🔗 Clone with HTTPS │
│ 🔑 Clone with SSH │
│ 📱 Open with GitHub Desktop │
│ 📦 Download ZIP 💾 │ ← 点击这个
│ 💻 Open with GitHub Codespaces │
└────────────────────────────────────┘
第4步:解压 ZIP 文件
# 下载完成后,解压文件
unzip 仓库名-main.zip
cd 仓库名-main
优缺点
| 优点 | 缺点 |
|---|---|
| ✅ 不需要安装 Git | ❌ 不能同步原仓库的更新 |
| ✅ 操作简单 | ❌ 不能提交修改 |
| ✅ 适合新手 | ❌ 浪费存储空间(重复下载) |
方式2:Git Clone(最常用)⭐⭐
前置条件
需要先安装 Git:
# 检查是否安装了 Git
git --version
# 如果没有,去官网下载安装
# https://git-scm.com/
操作步骤
步骤1:复制仓库地址
方法A:HTTPS 地址(推荐新手)
1. 点击绿色的 Code 按钮
2. 选择 Clone with HTTPS
3. 点击复制按钮(📋)复制地址
地址格式:
https://github.com/GTX950L/github-encyclopedia.git
方法B:SSH 地址(推荐熟手)
1. 点击绿色的 Code 按钮
2. 选择 Clone with SSH
3. 点击复制按钮
地址格式:
git@github.com:GTX950L/github-encyclopedia.git
💡 区别:
- HTTPS:每次操作需要输入用户名和密码(或 Token)
- SSH:配置一次 SSH Key 后,无需再输入密码(更安全、更方便)
步骤2:执行 clone 命令
打开终端(命令行),执行:
# 基本格式
git clone 仓库地址
# 示例:克隆一个开源项目
git clone https://github.com/torvalds/linux.git
# 克隆到指定目录
git clone https://github.com/GTX950L/github-encyclopedia.git 我的目录名
步骤3:进入项目目录
cd 仓库名
# 查看项目结构
ls -la # macOS/Linux
dir # Windows
同步原仓库的更新
如果你 Fork 了一个项目,或者原仓库有更新,可以同步:
# 1. 查看远程仓库
git remote -v
# 2. 添加原仓库为 upstream(只需执行一次)
git remote add upstream https://github.com/原作者/仓库名.git
# 3. 拉取原仓库的更新
git fetch upstream
# 4. 合并更新到你的分支
git merge upstream/main
方式3:GitHub CLI(最强大)⭐⭐⭐
什么是 GitHub CLI?
GitHub CLI(gh)是 GitHub 官方提供的命令行工具,让你可以:
- ✅ 克隆仓库
- ✅ 创建 Issue 和 PR
- ✅ 审查和合并 PR
- ✅ 管理 GitHub Actions
安装 GitHub CLI
macOS
# 使用 Homebrew
brew install gh
# 验证安装
gh --version
Windows
# 使用 Winget
winget install GitHub.cli
# 或使用 Chocolatey
choco install gh
Linux
# Ubuntu/Debian
sudo apt install gh
# Fedora
sudo dnf install gh
首次使用:登录 GitHub
# 登录命令
gh auth login
# 会问你一系列问题:
# 1. 要登录 GitHub.com 还是 GitHub Enterprise?→ 选择 GitHub.com
# 2. 想用 HTTPS 还是 SSH?→ 推荐 SSH(更安全)
# 3. 想用浏览器登录还是 Token?→ 推荐浏览器(最简单)
使用 gh 克隆仓库
# 基本格式
gh repo clone GTX950L/github-encyclopedia
# 示例
gh repo clone torvalds/linux
# 克隆到当前目录
gh repo clone GTX950L/github-encyclopedia -- # 注意末尾的 --
# 只克隆最新版本(不克隆历史记录,速度更快)
gh repo clone GTX950L/github-encyclopedia -- --depth 1
gh 的其他强大功能
# 创建 Issue
gh issue create --title "Bug报告" --body "详细描述"
# 查看 PR 列表
gh pr list
# 创建 PR
gh pr create --title "新功能" --body "说明"
# 克隆你自己的所有仓库
gh repo list --limit 1000 | while read -r repo _; do
gh repo clone "$repo"
done
如何选择合适的下载方式
决策树
你想下载代码吗?
│
├─ 只想快速看看代码,不需要修改?
│ └─ 使用 Download ZIP ✅
│
├─ 想学习、修改代码,并可能贡献开源?
│ └─ 使用 Git Clone ✅
│
└─ 频繁操作 GitHub,需要自动化?
└─ 使用 GitHub CLI ✅
实际场景推荐
| 场景 | 推荐方式 | 理由 |
|---|---|---|
| 上课学习某个开源项目 | Download ZIP | 快速,不需要 Git |
| 准备给开源项目提交 PR | Git Clone | 需要提交修改 |
| 管理自己的多个仓库 | GitHub CLI | 批量操作更方便 |
| 在公司内网环境 | Git Clone (HTTPS) | 通常 SSH 端口被封 |
下载后的操作
1️⃣ 查看项目结构
# 查看文件列表
ls -la
# 查看项目说明文件(很重要!)
cat README.md
# 查看项目许可证
cat LICENSE
# 查看依赖文件(如果是 Node.js 项目)
cat package.json
2️⃣ 安装依赖
不同语言的项目有不同的依赖管理:
Python 项目
# 查看是否有 requirements.txt
cat requirements.txt
# 安装依赖
pip install -r requirements.txt
# 或者使用虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # macOS/Linux
venv\Scripts\activate # Windows
pip install -r requirements.txt
Node.js 项目
# 查看 package.json
cat package.json
# 安装依赖
npm install
# 或者使用 yarn
yarn install
Java 项目
# 如果使用 Maven
mvn install
# 如果使用 Gradle
gradle build
3️⃣ 运行项目
# 查看 README.md,通常会有运行说明
# 示例:运行一个 Python 项目
python main.py
# 示例:运行一个 Node.js 项目
npm start
# 示例:运行一个 Java 项目
java -jar target/项目名.jar
常见问题
Q1: clone 很慢怎么办?
A: 有几种方法可以加速:
方法1:使用国内镜像
# 将 github.com 替换为镜像地址
git clone https://github.com/GTX950L/github-encyclopedia.git
# 改为:
git clone https://hub.fastgit.xyz/GTX950L/github-encyclopedia.git
⚠️ 注意:镜像站点可能不是官方运营,请勿用于敏感项目。
方法2:只克隆最新版本
# 不克隆完整历史记录,只克隆最新版本
git clone --depth 1 https://github.com/GTX950L/github-encyclopedia.git
方法3:使用代理
# 配置 Git 使用代理
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890
Q2: 下载的代码如何更新到最新版本?
A: 如果你是用 git clone 下载的,可以:
# 进入项目目录
cd 仓库名
# 拉取最新代码
git pull origin main
如果你是用 Download ZIP 下载的,只能重新下载。
Q3: 我可以下载私有仓库吗?
A: 可以,但需要权限:
- 方法1:所有者给你添加为协作者
- 方法2:组织给你分配访问权限
- 方法3:使用 Token(需要有
repo权限)
⚠️ 注意:GitHub 已于 2021 年 8 月移除「把 Token 直接拼进克隆 URL」的认证方式。正确做法是使用凭据管理器或
gh命令行工具,Token 不会出现在命令历史中,更安全。
# 推荐方式1:GitHub CLI(会自动弹出浏览器授权,无需手动输入 Token)
gh auth login
git clone https://github.com/GTX950L/github-encyclopedia.git
# 推荐方式2:Windows/macOS 凭据管理器
# 首次 git push/clone 时会自动弹出窗口输入 Token,之后自动记住
Q4: fork 和 clone 有什么区别?
| 操作 | 作用 | 位置 |
|---|---|---|
| Fork | 复制别人的仓库到你的 GitHub 账号 | GitHub 云端 |
| Clone | 下载仓库到你的本地电脑 | 本地电脑 |
典型流程:
- Fork 别人的仓库(在 GitHub 上复制一份)
- Clone 你 Fork 的仓库(下载到本地)
- 修改代码
- Push 到你的 Fork
- 提交 PR 到原仓库
Q5: 下载的代码可以商用吗?
A: 取决于项目的开源协议(LICENSE 文件):
| 协议 | 可以商用吗? | 需要注明作者吗? |
|---|---|---|
| MIT | ✅ 可以 | ✅ 需要 |
| GPL | ✅ 可以 | ✅ 需要,且你的代码也要开源 |
| Apache 2.0 | ✅ 可以 | ✅ 需要 |
| 没有 LICENSE | ❌ 不可以(默认版权保护) | - |
💡 建议:使用前一定要查看 LICENSE 文件!
Q6: 我只想下载仓库中的某个目录,可以吗?
A: ✅ 可以! 使用 sparse-checkout(稀疏检出)。
适用场景:
- 仓库很大(如 monorepo),你只需要其中一部分
- 节省磁盘空间和下载时间
# 第1步:不带文件地克隆
git clone --no-checkout https://github.com/GTX950L/github-encyclopedia.git
cd 仓库名
# 第2步:启用 sparse-checkout
git sparse-checkout init --cone
# 第3步:指定你要的目录
git sparse-checkout set src/ docs/
# 第4步:检出文件
git checkout main
💡 这样只会下载
src/和docs/两个目录,其他文件不会下载到本地。
Q7: 仓库里有大文件,不想每次都下载怎么办?
A: 使用 Git LFS(Large File Storage)。
Git LFS 是 Git 的扩展,专门解决二进制大文件的版本管理问题。
Git 管理大文件的痛点
Git 对文本文件(源代码)管理极好,但对二进制大文件效率极低——每次修改都会保存完整副本,导致:
- 仓库体积快速膨胀
- Clone 变得极慢
- 磁盘空间大量浪费
Git LFS 的工作原理
传统 Git: [.psd v1] [.psd v2] [.psd v3] ← 每次修改都存完整文件
← 仓库爆炸式增长
Git LFS: [指针 v1] [指针 v2] [指针 v3] ← 仓库中只存指针(几十字节)
↓ ↓ ↓
[LFS 服务器] ← 真正的大文件存远程
在 Git 仓库中只存指针文件,大文件实际内容存储在远程 LFS 服务器,按需下载。
安装 Git LFS
# Windows(Git for Windows 已内置 Git LFS)
git lfs install # 运行一次即可
# 验证安装
git lfs version # 输出示例:git-lfs/3.4.0
macOS:
brew install git-lfs
Linux:sudo apt install git-lfs(Ubuntu) /sudo dnf install git-lfs(Fedora)
基本使用流程
# 第1步:告诉 LFS 要管理哪些文件类型
git lfs track "*.psd" # 所有 .psd 文件
git lfs track "*.zip" # 所有 .zip 文件
git lfs track "assets/**" # assets 目录下所有文件
git lfs track "*.bin" --filename # 单个文件
# 第2步:提交 .gitattributes(追踪规则文件)
git add .gitattributes
git commit -m "配置 Git LFS 追踪规则"
# 第3步:像平常一样 add/commit/push
git add design.psd
git commit -m "添加设计稿"
git push origin main # LFS 文件会自动上传到服务器
查看和管理 LFS 文件
git lfs track # 查看当前追踪规则
git lfs ls-files # 列出仓库中由 LFS 管理的文件
git lfs pull # 拉取 LFS 文件(clone 后需单独执行)
git lfs prune # 清理本地缓存的旧版本 LFS 文件
克隆包含 LFS 文件的仓库
# 方式1:普通 clone + 拉取 LFS
git clone https://github.com/GTX950L/github-encyclopedia.git
cd 仓库名
git lfs pull # 拉取 LFS 管理的文件
# 方式2:clone 时自动拉取 LFS
GIT_LFS_SKIP_SMUDGE=0 git clone https://github.com/GTX950L/github-encyclopedia.git
# 方式3:跳过 LFS 文件(只下载指针,适合只想看代码)
GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/GTX950L/github-encyclopedia.git
git lfs pull --include="*.psd" # 按需下载具体类型
历史仓库迁移
已有仓库想将大文件迁移到 LFS:
# 迁移所有 .psd 文件(包括历史提交)
git lfs migrate import --include="*.psd" --everything
# 迁移所有大于 100MB 的文件
git lfs migrate import --above="100MB" --everything
# 查看迁移后节省的空间
git lfs migrate info --everything
⚠️ 警告:迁移会重写 Git 历史(改变提交 SHA),需要团队协调后执行。迁移前最好创建备份。
GitHub LFS 配额
| 计划 | LFS 存储空间 | 单文件限制 |
|---|---|---|
| Free | 1 GB | ≤ 2 GB |
| Pro | 2 GB | ≤ 2 GB |
| Team | 50 GB | ≤ 2 GB |
| Enterprise | 100 GB+ | ≤ 2 GB |
超出可购买额外存储包($5/月 50GB)。
适用场景
| 适合 LFS | 不适合 LFS |
|---|---|
| 设计稿(PSD/AI/Sketch) | 源代码文件 |
| 图片/视频素材 | 小型配置文件 |
| 数据集/模型文件 | 文本/日志文件 |
| 二进制安装包 | 频繁变更的小文件 |
📝 实战练习
练习1:下载你的第一个开源项目
任务:
- 找一个你感兴趣的开源项目(比如 Vue.js)
- 用三种方式分别下载
- 对比文件大小和下载时间
练习2:同步原仓库的更新
任务:
- Fork 一个项目
- Clone 你的 Fork 到本地
- 配置 upstream
- 拉取原仓库的更新
练习3:使用 GitHub CLI
任务:
- 安装 GitHub CLI
- 登录你的账号
- 用
gh命令克隆一个仓库 - 用
gh命令查看你的所有仓库
📚 延伸阅读
- 第7章:分支管理 - 下载后如何创建分支修改代码
- 第9章:Fork 与 Pull Request - 如何给开源项目贡献代码
- 第16章:开源协议选择 - 了解下载的代码可以怎么用
📝 本章小结
你现在学会了:
- ✅ 三种下载代码的方式及其适用场景
- ✅ 如何使用 Git Clone 下载代码
- ✅ 如何同步原仓库的更新
- ✅ 如何使用 GitHub CLI 提高效率
- ✅ 下载后如何安装依赖和运行项目
下一步学习
- 想修改下载的代码?去 第6章:提交更改
- 想给开源项目贡献代码?去 第9章:Fork 与 PR
- 想了解开源协议?去 第16章:开源协议