前言:为什么深度学习需要代码管理?
当你开始深入学习深度学习项目后,很快会发现以下几个痛点:
改了模型参数后效果变差,却无法快速回到之前的版本想在两台设备上同步代码,只能靠U盘或网盘手动复制粘贴难以与同事或同学协作开发,经常发生代码覆盖冲突无法清晰地记录每次实验的改动内容和目的
GitHub正是解决这些问题的专业工具。本文将手把手带你安装Git、配置GitHub,并演示深度学习项目中的实战工作流。
1. Git与GitHub环境搭建
1.1 安装Git
Git是一个分布式版本控制系统,而GitHub是基于Git的代码托管平台。首先我们需要安装Git:
Windows系统安装步骤:
访问 Git官网下载页面下载Windows版本的安装包运行安装程序,基本所有选项保持默认即可在”选择默认编辑器”页面,建议选择Visual Studio Code(如果你按上一篇文章配置了VSCode)其他选项直接点击”Next”直到安装完成
验证安装:
安装完成后,在任意位置右键点击,选择”Git Bash Here”,打开命令行窗口,输入:
git --version
如果显示版本号(如
),说明安装成功。
git version 2.40.1
1.2 创建GitHub账户并配置SSH密钥
创建账户:
访问 GitHub官网点击”Sign up”注册新账户(建议使用学术邮箱,可以申请学生开发者包)
配置SSH密钥(让本地Git与GitHub安全通信):
4. 打开Git Bash,输入以下命令生成密钥(替换为你自己的邮箱):
ssh-keygen -t ed25519 -C "your_email@example.com"
连续按回车使用默认设置查看生成的公钥内容:
cat ~/.ssh/id_ed25519.pub
复制输出的全部内容登录GitHub,点击右上角头像 → Settings → SSH and GPG keys → New SSH key粘贴密钥内容,设置一个 recognizable 的名称(如”My Laptop”)回到Git Bash测试连接:
ssh -T git@github.com
看到 “You’ve successfully authenticated” 即表示成功。
1.3 配置全局用户信息
在Git Bash中设置你的用户名和邮箱(与GitHub一致):
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
2. GitHub实战:深度学习项目管理
2.1 典型工作场景与常用命令
深度学习项目中的Git使用通常涉及以下场景和命令:
场景 | 常用命令 | 说明 |
---|---|---|
初始化新项目 |
|
将当前文件夹变为Git仓库 |
|
关联远程GitHub仓库 | |
日常开发 |
|
查看文件状态 |
|
将文件添加到暂存区 | |
|
提交更改并添加说明 | |
|
推送更改到GitHub | |
同步更新 |
|
拉取远程最新更改 |
版本回溯 |
|
查看提交历史 |
|
切换到特定版本 |
2.2 实战示例:管理深度学习项目
让我们用一个真实的深度学习项目来演示完整的工作流程。
步骤一:在GitHub上创建新仓库
登录GitHub,点击右上角”+” → “New repository”仓库名:
描述:A simple image classification project using CNN选择”Public”(公开)勾选”Add a README file”点击”Create repository”
dl-image-classifier
步骤二:将仓库克隆到本地
# 复制你仓库的SSH地址(在GitHub仓库页面点击绿色的"Code"按钮)
git clone git@github.com:your-username/dl-image-classifier.git
cd dl-image-classifier
步骤三:添加深度学习项目文件
假设你的项目结构如下:
dl-image-classifier/
├── src/
│ ├── model.py
│ └── train.py
├── data/
│ └── .gitignore # 注意:数据文件不应该上传
├── requirements.txt
└── README.md
创建适合深度学习项目的
文件,避免将大型数据文件或模型权重上传:
.gitignore
# 数据文件
data/
*.h5
*.pt
*.pth
# 环境相关
venv/
.env
# 日志和检查点
logs/
checkpoints/
runs/
# 系统文件
.DS_Store
Thumbs.db
步骤四:进行第一次提交并推送
# 添加所有文件(除了.gitignore中排除的)
git add .
# 查看状态确认无误
git status
# 提交更改
git commit -m "初始提交:添加项目基础结构和CNN模型"
# 推送到GitHub
git push origin main
2.3 分支管理:安全地进行实验
在深度学习中,我们经常需要尝试不同的网络结构或超参数。使用分支可以安全地进行实验:
# 创建一个用于实验新模型架构的分支
git branch experiment-new-arch
# 切换到该分支
git checkout experiment-new-arch
# 或者使用一条命令完成创建和切换
git checkout -b experiment-new-arch
# 现在可以大胆修改代码,比如尝试ResNet替代CNN
# 修改完成后提交更改
git add .
git commit -m "尝试ResNet50架构"
# 如果实验成功,将分支合并回主分支
git checkout main
git merge experiment-new-arch
# 如果实验失败,只需切换回主分支并删除实验分支
git checkout main
git branch -d experiment-new-arch
2.4 协作开发:与团队成员一起工作
当多人协作时,GitHub的工作流程如下:
Fork项目:在GitHub上点击”Fork”,将他人项目复制到自己账户克隆到本地:
添加上游仓库:
git clone [你的fork地址]
创建功能分支:
git remote add upstream [原始项目地址]
开发并提交:完成功能后commit并push到你的fork发起Pull Request:在GitHub上点击”Compare & pull request”代码审查:项目维护者审查你的代码并提出修改建议合并代码:通过审查后,你的代码被合并到主项目
git checkout -b feature-new-loss
2.5 实用技巧:提高效率的Git操作
1. 暂存更改(临时切换任务)
# 保存当前工作进度而不提交
git stash
# 查看保存的进度列表
git stash list
# 恢复最近保存的进度
git stash pop
2. 查看差异
# 查看工作区与暂存区的差异
git diff
# 查看暂存区与最新提交的差异
git diff --staged
# 查看两次提交之间的差异
git diff commit_id1 commit_id2
3. 撤销操作
# 撤销尚未add的修改
git checkout -- filename
# 撤销已add但未commit的修改
git reset HEAD filename
# 修改最后一次提交的消息
git commit --amend -m "新的提交消息"
总结
通过本文,你应该已经掌握了:
✅ 环境搭建:安装Git、创建GitHub账户、配置SSH连接✅ 日常使用:克隆仓库、提交更改、推送代码的基本流程✅ 分支管理:使用分支安全地进行模型实验✅ 协作开发:Fork、Pull Request等协作流程✅ 高级技巧:暂存、差异比较、撤销操作等实用命令