GitHub 使用指南
GitHub 简介
GitHub 是一个基于 Git 的代码托管平台,提供了代码托管、协作开发、项目管理等功能。它是全球最大的开源社区之一。
graph TD
subgraph GitHub
CT[代码托管]
CD[协作开发]
PM[项目管理]
CT --> VC[版本控制]
CT --> CR[代码审查]
CD --> PR[Pull Request]
CD --> I[Issues]
PM --> P[Projects]
PM --> A[Actions]
end
GitHub 工作流程
graph LR
local[本地仓库] --> github[GitHub仓库]
github --> review[代码审查]
review --> main[主分支]
main --> local
GitHub 账号设置
- 访问 https://github.com 注册账号
- 配置 SSH 密钥
# 生成 SSH 密钥 ssh-keygen -t rsa -b 4096 -C "your.email@example.com" # 查看公钥 cat ~/.ssh/id_rsa.pub
- 将公钥添加到 GitHub 账号设置中
GitHub 基本操作
创建仓库
graph TD
A[创建仓库] --> B[填写信息]
B --> C[选择可见性]
C --> D[初始化选项]
D --> E[完成创建]
推送代码到 GitHub
# 添加远程仓库
git remote add origin https://github.com/username/repository.git
# 推送代码
git push -u origin main
拉取更新
# 拉取远程更新
git pull origin main
# 获取远程更新但不合并
git fetch origin
GitHub 协作功能
Fork 和 Pull Request 流程
graph TD
A[Fork仓库] --> B[克隆到本地]
B --> C[创建分支]
C --> D[修改代码]
D --> E[提交更改]
E --> F[创建Pull Request]
F --> G[代码审查]
G --> H[合并到主仓库]
Issues 管理
graph TD
A[创建Issue] --> B[分配标签]
B --> C[指派负责人]
C --> D[讨论解决]
D --> E[关闭Issue]
Projects 看板
graph TD
board[项目看板] --> todo[待办]
board --> doing[进行中]
board --> done[已完成]
todo --> doing
doing --> done
GitHub Pages
网站部署流程
graph TD
A[创建仓库] --> B[添加文件]
B --> C[配置Pages]
C --> D[选择主题]
D --> E[发布网站]
GitHub Actions
CI/CD 流程
graph TD
A[代码提交] --> B[触发工作流]
B --> C[运行测试]
C --> D[构建应用]
D --> E[部署]
常用工作流
name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK
uses: actions/setup-java@v2
with:
java-version: '11'
- name: Build
run: ./gradlew build
GitHub 功能对比
功能 | 免费版 | 团队版 | 企业版 |
---|---|---|---|
私有仓库 | 有限 | 无限 | 无限 |
协作者 | 有限 | 更多 | 更多 |
高级安全 | ❌ | ✅ | ✅ |
代码审查 | ✅ | ✅ | ✅ |
Actions | 有限 | 更多 | 更多 |
最佳实践
- 使用有意义的提交信息
- 保持仓库整洁,及时清理无用分支
- 使用 Issues 和 Projects 管理项目
- 定期更新依赖,修复安全漏洞
- 编写清晰的 README 文档
常见问题解决
1. 仓库同步
graph TD
A[本地仓库] --> B[更新本地]
B --> C[解决冲突]
C --> D[提交更改]
D --> E[更新远程]
2. 分支管理
graph TD
main[主分支] --> dev[开发分支]
main --> feature[功能分支]
main --> fix[修复分支]
dev --> main : merge
feature --> main : merge
fix --> main : merge