前言
在软件开发的学习和实践中,你是否遇到过这些问题:代码改了又改,最后想回到三天前的版本却找不回来了;在不同电脑上写同一个项目,代码版本混乱不堪;想和别人一起协作开发,却不知道如何同步代码。
Git和GitHub就是解决这些问题的黄金组合。Git是本地版本控制工具,负责记录你本地文件的每一次修改历史;GitHub是云端代码托管平台,可以把你的Git项目上传到网上,方便备份、展示和协作。
简单理解:
- Git = 本地版本控制工具(记录代码历史、分支管理)
- GitHub = 云端代码托管与协作平台(备份代码、团队协作、开源共享)
本文将从零开始,带你完成从Git下载安装、GitHub账号注册、SSH密钥配置到代码提交的全流程,每一步都配有详细说明,适合完全零基础的初学者。
文章目录
-
- 前言
-
- 一、GitHub简介与核心功能
-
- [1.1 什么是GitHub](#1.1 什么是GitHub)
- [1.2 GitHub与Git的关系](#1.2 GitHub与Git的关系)
- [1.3 GitHub在软件开发中的价值](#1.3 GitHub在软件开发中的价值)
- 二、Git下载与安装
-
- [2.1 下载Git安装包](#2.1 下载Git安装包)
- [2.2 安装Git(Windows)](#2.2 安装Git(Windows))
- [2.3 验证安装](#2.3 验证安装)
- 三、GitHub账号注册
-
- [3.1 注册流程](#3.1 注册流程)
- [3.2 注册注意事项](#3.2 注册注意事项)
- 四、Git基础配置
-
- [4.1 全局配置](#4.1 全局配置)
- [4.2 局部配置](#4.2 局部配置)
- [4.3 查看已配置信息](#4.3 查看已配置信息)
- [4.4 可选优化配置](#4.4 可选优化配置)
- [4.5 修改已存在的配置](#4.5 修改已存在的配置)
- 五、SSH密钥配置(免密连接GitHub)
-
- [5.1 检查是否已有SSH密钥](#5.1 检查是否已有SSH密钥)
- [5.2 生成新的SSH密钥](#5.2 生成新的SSH密钥)
- [5.3 启动SSH代理并添加私钥](#5.3 启动SSH代理并添加私钥)
- [5.4 复制公钥内容](#5.4 复制公钥内容)
- [5.5 在GitHub上添加公钥](#5.5 在GitHub上添加公钥)
- [5.6 验证SSH连接是否成功](#5.6 验证SSH连接是否成功)
- 六、仓库创建与基本代码提交
-
- [6.1 方式一:从本地开始追踪一个项目(本地已有代码)](#6.1 方式一:从本地开始追踪一个项目(本地已有代码))
- [6.2 方式二:从GitHub仓库开始(先有远程仓库)](#6.2 方式二:从GitHub仓库开始(先有远程仓库))
- [6.3 日常开发四步曲](#6.3 日常开发四步曲)
- 七、常用Git命令速查
- 八、总结
- 附:常见问题与解决
一、GitHub简介与核心功能
1.1 什么是GitHub
GitHub是全球最大的代码托管平台,基于Git版本控制系统构建,为开发者提供云端代码存储与协作开发服务。它不仅仅是"代码网盘",更是一个完整的开发者工作台。
核心功能包括:
- 代码托管:把项目代码安全存储在云端,本地电脑出问题也不怕丢失
- 版本管理:记录每一次修改,可随时回滚到任意历史版本、对比差异
- 团队协作:支持多人同时开发同一个项目,代码互不覆盖
- Issue(任务/BUG管理) :提需求、报BUG、分配任务
- Pull Request(PR) :提交代码改动,让团队成员审核通过后再合并
- GitHub Actions:自动化测试、打包、部署(CI/CD)
- GitHub Pages:免费搭建静态网站
- Star / Fork / Watch:收藏、复制、关注感兴趣的项目
1.2 GitHub与Git的关系
很多初学者容易把Git和GitHub混为一谈,但它们其实是两个不同的东西:
| 对比维度 | Git | GitHub |
|---|---|---|
| 本质 | 本地版本控制软件 | 云端代码托管平台 |
| 运行位置 | 安装在本地电脑 | 运行在云端服务器 |
| 是否需要联网 | 不需要联网也能使用 | 必须联网才能访问 |
| 核心功能 | 记录代码历史、分支管理 | 存放Git仓库、团队协作、代码审查 |
Git是工具,GitHub是平台。你在本地用Git管理代码,然后把代码推送到GitHub上备份和分享------Git让版本控制成为可能,GitHub让版本控制变得可以协作。
1.3 GitHub在软件开发中的价值
- 代码安全备份:本地电脑损坏也不怕代码丢失
- 多人协作开发:团队成员分工写代码,互不覆盖
- 规范化开发流程:提交 → 审核 → 合并(PR流程)
- 开源共享:全球开发者可以一起贡献项目
- 降低沟通成本:代码、文档、任务管理都在一处
- 自动化CI/CD:自动测试、自动部署
- 个人作品展示:GitHub就是程序员的简历和作品集
二、Git下载与安装
2.1 下载Git安装包
访问Git官网下载页面:https://git-scm.com/downloads
根据操作系统选择对应版本:
- Windows :点击"Windows"下载
.exe安装包 - macOS :推荐使用Homebrew安装(
brew install git)或下载官方安装包 - Linux :使用系统包管理器安装(Ubuntu:
sudo apt-get install git)
安装前确认系统架构 :打开CMD输入systeminfo查看系统类型,确认是X64还是ARM64,下载对应版本。

2.2 安装Git(Windows)
双击下载的安装包,按以下步骤操作:
- 接受许可协议:点击"Next"
- 选择安装路径 :建议保持默认(
C:\Program Files\Git),避免使用中文或空格路径 - 选择组件:保持默认勾选,建议勾选"Git Bash Here"(方便右键快速打开命令行)
- 选择默认编辑器:如果安装了VSCode,建议选择"Use Visual Studio Code as Git's default editor"
- 调整PATH环境变量:选择"Git from the command line and also from 3rd-party software"(推荐)
- 选择HTTPS传输后端:选择"Use the OpenSSL library"
- 配置行结束符转换:选择"Checkout Windows-style, commit Unix-style line endings"
- 选择终端模拟器:选择"Use MinTTY"(默认)
- 其他选项:保持默认即可,一路点击"Next"完成安装
2.3 验证安装
安装完成后,在桌面或任意文件夹空白处右键,选择"Git Bash Here"打开Git Bash终端。输入以下命令验证安装是否成功:
bash
git --version
如果显示类似git version 2.xx.x的信息,说明安装成功。

三、GitHub账号注册
3.1 注册流程
- 打开GitHub官网:https://github.com
- 点击右上角的"Sign up"进入注册页面
- 填写注册信息:
- Email:输入常用邮箱(QQ邮箱、网易邮箱、谷歌邮箱均可)
- Password:设置密码(需包含字母、数字、特殊字符)
- Username:自定义用户名(将作为仓库地址的一部分)
- 选择国家或地区
- 完成邮箱验证(GitHub会发送验证邮件到你的邮箱)
- 点击"Create account"完成注册

3.2 注册注意事项
- 用户名一经确定,后续修改会影响仓库地址,建议慎重选择
- 邮箱建议使用常用邮箱,后续Git配置会用到
- 密码要足够复杂,保障账户安全
四、Git基础配置
Git安装完成后,第一次使用前需要配置用户名和邮箱。这些信息会记录在每一次提交中,让别人知道是谁做了修改。
4.1 全局配置
打开Git Bash,执行以下命令:
bash
# 配置用户名(换成你的GitHub用户名)
git config --global user.name "Your GitHub Username"
# 配置邮箱(换成你注册GitHub的邮箱)
git config --global user.email "Your GitHub Email"
例如:
bash
git config --global user.name "PLAYEROFMYLIFE"
git config --global user.email "230xxx@qq.com"
--global表示全局配置,对所有仓库生效。配置完成后,所有提交记录都会带上这个身份信息。
4.2 局部配置
如果某个特定项目需要使用不同的用户名或邮箱,可以在项目目录下单独配置:
bash
# 进入具体项目路径
cd /path/to/your/project
# 配置当前仓库的用户名和邮箱(不加--global)
git config user.name "Your GitHub Username"
git config user.email "Your GitHub Email"
局部配置会覆盖全局配置,仅对当前仓库生效。
4.3 查看已配置信息
bash
# 查看所有配置
git config --list
# 查看全局配置
git config --global --list
# 查看当前仓库局部配置(需进入仓库目录)
git config --local --list

4.4 可选优化配置
bash
# 开启彩色输出
git config --global color.ui auto
# 扩大HTTP缓冲区(解决大文件推送问题)
git config --global http.postBuffer 524288000
# 配置换行符规则(Windows推荐)
git config --global core.autocrlf true
# 配置命令简写(类似Linux的alias)
git config --global alias.st status # 之后可以用 git st 代替 git status
git config --global alias.br branch # 之后可以用 git br 代替 git branch
# 设置默认分支名为main(与GitHub保持一致)
git config --global init.defaultBranch main
4.5 修改已存在的配置
bash
# 删除某项配置
git config --global --unset user.email
# 重新设置即可覆盖原有配置
git config --global user.email "newemail@example.com"
五、SSH密钥配置(免密连接GitHub)
为了让本地Git与GitHub之间的通信更安全、更方便,推荐配置SSH密钥。配置后可以彻底摆脱每次操作都要输入账号密码的麻烦。
为什么选择SSH而非HTTPS?
HTTPS方式的本质是"账号密码验证",密码存在泄露风险;而SSH基于"公私钥"加密验证,私钥保存在本地绝不外传,安全性高得多。
5.1 检查是否已有SSH密钥
打开Git Bash,执行:
bash
ls -al ~/.ssh
# 或
ll -a ~/.ssh
如果看到id_rsa和id_rsa.pub(或id_ed25519和id_ed25519.pub),说明已有SSH密钥,可以跳到步骤5.4。如果目录为空或提示"No such file or directory",继续下一步。
5.2 生成新的SSH密钥
执行以下命令(把邮箱换成你GitHub注册的邮箱):
bash
# 方式一:使用RSA算法(兼容性更好)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# 方式二:使用Ed25519算法(更安全、更高效,推荐)
ssh-keygen -t ed25519 -C "your_email@example.com"
执行后终端会依次出现提示,全程按回车即可:
- 第一步提示
Enter file in which to save the key:直接回车(使用默认路径) - 第二步提示
Enter passphrase:直接回车(设置密码的话每次用SSH都要输入,新手直接留空即可) - 第三步提示
Enter same passphrase again:再次回车
生成成功后,会在~/.ssh/目录下产生两个文件:
- 私钥 :
id_rsa或id_ed25519(绝对不能泄露! ) - 公钥 :
id_rsa.pub或id_ed25519.pub(需要复制到GitHub)
5.3 启动SSH代理并添加私钥
bash
# 启动SSH代理
eval "$(ssh-agent -s)"
# 将私钥添加到代理中(根据你生成的密钥类型选择)
ssh-add ~/.ssh/id_rsa
# 或
ssh-add ~/.ssh/id_ed25519
5.4 复制公钥内容
不同操作系统复制命令不同:
bash
# Windows (Git Bash)
clip < ~/.ssh/id_rsa.pub
# 或
clip < ~/.ssh/id_ed25519.pub
# Linux
xclip -sel clip < ~/.ssh/id_rsa.pub
# macOS
pbcopy < ~/.ssh/id_rsa.pub
如果上述命令不生效,可以直接用记事本打开公钥文件(路径如C:\Users\你的用户名\.ssh\id_rsa.pub),手动复制全部内容。
5.5 在GitHub上添加公钥
- 登录GitHub,点击右上角头像 → 选择 Settings(设置)
- 在左侧菜单栏找到 SSH and GPG keys
- 点击右上角的 New SSH key
- 填写信息:
- Title:给这把密钥起个名字(如"我的笔记本电脑",方便识别是哪台设备)
- Key type:保持默认"Authentication Key"
- Key:把刚才复制的公钥内容粘贴进去
- 点击 Add SSH key
- 弹出验证密码提示,输入GitHub密码确认即可


5.6 验证SSH连接是否成功
回到Git Bash终端,执行:
bash
ssh -T git@github.com
第一次执行会提示Are you sure you want to continue connecting,输入yes回车。
如果看到类似以下信息,说明配置成功:
Hi 你的用户名! You've successfully authenticated, but GitHub does not provide shell access.

常见问题排查:
问题1:连接被拒绝(端口22被封)
ssh: connect to host github.com port 22: Connection refused
解决方法:创建SSH配置文件,强制使用443端口。
bash
nano ~/.ssh/config
在文件中添加以下内容:
Host github.com
HostName ssh.github.com
Port 443
User git
保存后退出,再次执行ssh -T git@github.com测试。
问题2:公钥复制错误
检查是否漏复制了最后一行(邮箱部分),或多了空格。
问题3:生成的邮箱和GitHub不一致
生成密钥时用的邮箱必须和GitHub注册邮箱一致。
问题4:私钥未添加到SSH代理
重新执行ssh-add ~/.ssh/id_rsa(或id_ed25519)。
问题5:HOME路径不正确
bash
echo $HOME
# 示例输出:/c/Users/你的用户名
如果路径不正确,需要修正环境变量。
强制指定密钥测试:
bash
ssh -i "/c/Users/你的用户名/.ssh/id_ed25519" -T git@github.com
六、仓库创建与基本代码提交
完成SSH配置后,就可以开始创建仓库并提交代码了。这里介绍两种方式:从本地开始追踪项目 (本地已有代码)和从GitHub仓库开始(先有远程仓库)。
6.1 方式一:从本地开始追踪一个项目(本地已有代码)
步骤1:进入本地项目文件夹
打开Git Bash,进入你的项目目录:
bash
# 切换盘符(如果在D盘)
cd D:
# 进入项目文件夹
cd learngit/
也可以找到 learngit 项目文件夹;空白处右键 → Git Bash Here;直接执行后续 git 初始化命令,无需 cd 跳转。
步骤2:初始化Git仓库
bash
# 初始化Git仓库,会生成一个.git隐藏文件夹
# --initial-branch=main 指定默认分支为main(与GitHub保持一致)
git init --initial-branch=main
执行后终端提示Initialized empty Git repository in ...,说明初始化成功。
.git文件夹是Git的版本数据库,记录了所有历史变更,千万不要随意删除或修改里面的内容。
步骤3:创建.gitignore文件
.gitignore用于忽略不需要追踪的文件(如编译产物、日志、临时文件等):
bash
touch .gitignore
在.gitignore中写入要忽略的文件或目录,例如:
# ========== 数据集文件夹==========
data/
dataset/
datasets/
train_data/
val_data/
*.zip
*.tar
*.tar.gz
*.rar
*.7z
# ========== 模型权重、检查点==========
checkpoints/
weights/
*.pth
*.pt
*.ckpt
*.onnx
*.h5
*.pkl
# ========== 训练缓存、输出文件 ==========
runs/ # Tensorboard日志
output/
predictions/
.cache/
torch_cache/
# ========== 虚拟环境、安装包 ==========
venv/
.venv/
env/
*.whl
把数据集统一放在 dataset/、data/ 目录,添加上面规则后,git add 会自动跳过;
仅保留代码、配置文件(cfg/yolov3-custom.cfg)上传,数据集单独网盘 / 本地存储,仓库体积极小,推送零报错。
平台单文件 100MB 限制,普通 Git 代码仓库上限(GitHub 免费单仓库 2GB)
步骤4:添加文件到暂存区并提交
bash
# 把当前目录所有文件添加到暂存区(.代表所有文件)
git add .
# 提交暂存区的文件到本地仓库(-m后是提交说明,必填)
git commit -m "first commit"
git add是把文件放入"购物车"(暂存区),git commit是正式"买单"(保存到本地仓库)。
步骤5:在GitHub上创建远程仓库
- 登录GitHub,点击右上角 + 号 → 选择 New repository
- 填写仓库信息:
- Repository name:仓库名(建议和本地项目文件夹名一致,方便识别)
- Description:项目描述
- Visibility:选择Public(公开)或Private(私有)
- 重要提示 :不要勾选"Add a README file"、"Add .gitignore"、"Choose a license"------这些会让远程仓库非空,后续推送会产生冲突
- 点击 Create repository
- 复制仓库的SSH地址(形如
git@github.com:用户名/仓库名.git)
步骤6:关联本地仓库和远程仓库
bash
# 添加远程仓库(origin是远程仓库的别名,默认用origin即可)
git remote add origin git@github.com:PLAYEROFMYLIFE/learngit.git
# 验证是否关联成功
git remote -v
步骤7:将本地代码推送到GitHub
bash
# 把本地main分支推送到origin远程仓库的main分支
# -u是绑定默认推送分支,后续只需git push即可
git push --set-upstream origin main

推送成功后,刷新GitHub仓库页面即可看到代码。

6.2 方式二:从GitHub仓库开始(先有远程仓库)
步骤1:克隆远程仓库到本地
在GitHub仓库页面点击"Code"按钮,复制SSH地址,然后在Git Bash中执行:
bash
git clone git@github.com:PLAYEROFMYLIFE/learngit.git
这会将远程仓库完整克隆到本地当前目录。
步骤2:本地修改文件并提交
bash
# 查看修改状态
git status
# 添加修改到暂存区
git add 文件名
# 提交修改到本地仓库
git commit -m "修改说明"
# 推送到远程仓库
git push origin main
6.3 日常开发四步曲
日常开发中,最常用的四个命令是:
bash
# 1. 查看当前状态(哪些文件被修改了)
git status
# 2. 添加修改到暂存区(放购物车)
git add . # 添加所有修改
git add 文件名 # 添加指定文件
# 3. 提交到本地仓库(正式保存)
git commit -m "提交说明"
# 4. 推送到远程仓库(同步到云端)
git push
七、常用Git命令速查
| 命令 | 作用 |
|---|---|
git init |
在当前目录初始化一个新的Git仓库 |
git clone <地址> |
克隆远程仓库到本地 |
git status |
查看当前工作区和暂存区的状态 |
git add <文件> |
将文件添加到暂存区 |
git commit -m "说明" |
将暂存区内容提交到本地仓库 |
git push |
将本地提交推送到远程仓库 |
git pull |
从远程仓库拉取最新代码并合并 |
git log |
查看提交历史 |
git branch |
查看分支列表 |
git remote -v |
查看远程仓库配置 |
八、总结
本文从零开始,完整讲解了Git与GitHub的基础入门知识:
- 概念理解:Git是本地版本控制工具,GitHub是云端代码托管平台
- 环境搭建:Git下载安装、GitHub账号注册、Git基础配置(用户名和邮箱)
- SSH配置:生成SSH密钥、添加到GitHub、验证连接
- 代码提交:两种方式(本地→远程、远程→本地)的完整流程
掌握这些基础知识后,你就可以开始使用Git和GitHub管理自己的代码项目了。后续可以进一步学习分支管理、冲突解决、Pull Request等进阶内容,逐步向团队协作和开源贡献迈进。
附:常见问题与解决
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 安装Git后找不到Git Bash | 安装时未勾选相关组件 | 重新运行安装程序,勾选"Git Bash Here" |
git --version提示找不到命令 |
Git未添加到PATH环境变量 | 重新安装,选择"Git from the command line" |
| SSH连接超时 | 端口22被封锁 | 配置SSH使用443端口(见5.6节) |
git push要求输入密码 |
使用了HTTPS地址而非SSH | 改用SSH地址:git remote set-url origin git@github.com:用户名/仓库名.git |
| 推送时提示"non-fast-forward" | 远程仓库有本地没有的提交 | 先执行git pull拉取最新代码再推送 |
| 克隆时提示"Permission denied" | SSH密钥未正确配置 | 检查公钥是否添加到GitHub,私钥是否添加到SSH代理 |