文章
GitHub 完全指南:从入门到精通
GitHub 完全指南:从入门到精通 一篇搞定:GitHub 是什么、怎么用、Issue/PR/Actions 等核心功能全覆盖 目录 一、核心概念 二、基础使用 三、Issue 管理 四、Pull Request 完全...
GitHub 完全指南:从入门到精通 #
一篇搞定:GitHub 是什么、怎么用、Issue/PR/Actions 等核心功能全覆盖
目录 #
一、核心概念 #
1.1 什么是 GitHub? #
GitHub = 代码托管平台 + 协作开发平台
打个比方:
- Git 是「版本控制系统」,记录代码的每次修改
- GitHub 是「代码仓库」,把代码存在云端,方便分享和协作
- 就像 Git 是本地硬盘,GitHub 是云盘
GitHub 能做什么?
| 功能 | 说明 |
|---|---|
| 代码托管 | 存储代码,支持 Git 操作 |
| 版本控制 | 记录每次修改,随时回退 |
| 协作开发 | 多人协作,代码审查 |
| Issue 追踪 | 管理 Bug、功能需求、任务 |
| Pull Request | 提交代码变更,请求合并 |
| Actions | 自动化构建、测试、部署 |
| Packages | 托管 npm/Docker 等包 |
| Pages | 免费静态网站托管 |
| Copilot | AI 编程助手 |
1.2 核心名词速查 #
| 名词 | 英文 | 含义 |
|---|---|---|
| 仓库 | Repository (Repo) | 存放代码的地方 |
| 分支 | Branch | 独立的开发线 |
| 提交 | Commit | 一次代码修改记录 |
| 推送 | Push | 上传代码到远程仓库 |
| 拉取 | Pull | 下载远程代码到本地 |
| 合并 | Merge | 把分支合并到主分支 |
| 克隆 | Clone | 复制远程仓库到本地 |
| 复刻 | Fork | 复制别人的仓库到自己账号下 |
| 拉取请求 | Pull Request (PR) | 请求合并代码 |
| 议题 | Issue | 问题、需求、任务 |
| 动作 | Actions | 自动化工作流 |
| 工作流 | Workflow | Actions 的配置文件 |
| 标签 | Label | 分类标记 |
| 里程碑 | Milestone | 版本目标 |
1.3 GitHub vs Git #
| 对比项 | Git | GitHub |
|---|---|---|
| 类型 | 版本控制工具 | 代码托管平台 |
| 运行位置 | 本地 | 云端 |
| 是否需要网络 | ❌ 否 | ✅ 是 |
| 协作功能 | ❌ 无 | ✅ 有(Issue/PR/Actions) |
| 费用 | 免费 | 免费 + 付费(私有团队) |
二、基础使用 #
2.1 注册与配置 #
1. 注册 GitHub 账号
访问 github.com 注册(免费)。
2. 配置 SSH Key(推荐)
# 生成 SSH Key
ssh-keygen -t ed25519 -C "your-email@example.com"
# 查看公钥
cat ~/.ssh/id_ed25519.pub
# 复制公钥,粘贴到 GitHub → Settings → SSH and GPG keys → New SSH key3. 配置 Git 用户信息
# 设置用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "your-email@example.com"
# 查看配置
git config --list2.2 创建仓库 #
方法一:网页创建
- 点击右上角
+→New repository - 填写仓库信息:
- Repository name: 仓库名
- Description: 描述(可选)
- Public/Private: 公开/私有
- Add README: 添加 README 文件
- Add .gitignore: 添加忽略文件
- Choose a license: 选择开源协议
- 点击
Create repository
方法二:命令行创建
# 创建本地仓库
mkdir my-project
cd my-project
git init
# 创建 README
echo "# My Project" > README.md
# 提交
git add .
git commit -m "Initial commit"
# 添加远程仓库(先在 GitHub 上创建空仓库)
git remote add origin git@github.com:username/my-project.git
# 推送
git push -u origin main方法三:使用 GitHub CLI
# 安装 GitHub CLI
# macOS: brew install gh
# Windows: winget install GitHub.cli
# Linux: 包管理器安装
# 登录
gh auth login
# 创建仓库
gh repo create my-project --public --clone
# 创建并推送
gh repo create my-project --public --source=. --push2.3 日常操作 #
克隆仓库
# HTTPS
git clone https://github.com/username/repo.git
# SSH
git clone git@github.com:username/repo.git
# GitHub CLI
gh repo clone username/repo分支操作
# 查看分支
git branch # 本地分支
git branch -r # 远程分支
git branch -a # 所有分支
# 创建分支
git branch feature-1 # 创建
git checkout feature-1 # 切换
git checkout -b feature-1 # 创建并切换(推荐)
git switch -c feature-1 # 新语法
# 推送分支
git push origin feature-1
# 删除分支
git branch -d feature-1 # 本地
git push origin --delete feature-1 # 远程提交与推送
# 查看状态
git status
# 添加文件
git add file.txt # 单个文件
git add . # 所有文件
git add -p # 交互式添加
# 提交
git commit -m "feat: add new feature"
# 推送
git push # 推送当前分支
git push -u origin main # 推送并设置上游拉取更新
# 拉取并合并
git pull origin main
# 只拉取不合并
git fetch origin
# 变基(推荐用于保持提交历史整洁)
git pull --rebase origin main2.4 .gitignore 文件 #
告诉 Git 忽略哪些文件。
# .gitignore 示例
# 依赖
node_modules/
vendor/
# 构建产物
dist/
build/
*.min.js
# 环境配置
.env
.env.local
.env.*.local
# IDE
.idea/
.vscode/
*.swp
*.swo
# 系统文件
.DS_Store
Thumbs.db
# 日志
*.log
logs/
# 临时文件
*.tmp
*.temp
.cache/常用模板: github.com/github/gitignore
三、Issue 管理 #
3.1 什么是 Issue? #
Issue = 问题追踪卡片
可以用来:
- 报告 Bug
- 提出新功能需求
- 讨论设计方案
- 追踪任务进度
- 记录待办事项
3.2 创建 Issue #
网页创建:
- 进入仓库 →
Issues→New issue - 填写内容:
- Title: 标题(简洁明确)
- Description: 详细描述
- Labels: 标签(分类)
- Assignees: 负责人
- Projects: 关联项目
- Milestone: 里程碑
- 点击
Submit new issue
命令行创建:
# 使用 GitHub CLI
gh issue create --title "Bug: 登录页面样式错乱" --body "描述内容..."
# 交互式创建
gh issue create -w3.3 Issue 模板 #
创建 .github/ISSUE_TEMPLATE/ 目录,放置模板文件。
Bug 报告模板:
<!-- .github/ISSUE_TEMPLATE/bug_report.md -->
---
name: Bug 报告
about: 报告一个 Bug
title: '[Bug] '
labels: bug
assignees: ''
---
## Bug 描述
清晰地描述这个 Bug 是什么。
## 复现步骤
1. 进入 '...'
2. 点击 '...'
3. 看到 '...'
## 预期行为
描述你期望发生什么。
## 实际行为
描述实际发生了什么。
## 截图
如果适用,添加截图帮助解释问题。
## 环境信息
- OS: [如 macOS, Windows, Linux]
- Browser: [如 Chrome, Safari, Firefox]
- Version: [如 1.0.0]
## 其他信息
其他任何有助于解决问题的信息。功能请求模板:
<!-- .github/ISSUE_TEMPLATE/feature_request.md -->
---
name: 功能请求
about: 提出一个新功能建议
title: '[Feature] '
labels: enhancement
assignees: ''
---
## 功能描述
清晰地描述你想要的功能。
## 问题背景
这个功能解决了什么问题?
## 建议方案
你希望如何实现这个功能?
## 替代方案
你考虑过的其他替代方案。
## 附加信息
任何其他相关信息或截图。3.4 Issue 标签管理 #
常用标签:
| 标签 | 颜色 | 用途 |
|---|---|---|
bug |
🟠 橙色 | Bug 报告 |
enhancement |
🔵 蓝色 | 功能增强 |
feature |
🟢 绿色 | 新功能 |
documentation |
🔵 蓝色 | 文档相关 |
good first issue |
🟢 绿色 | 适合新手 |
help wanted |
🟡 黄色 | 需要帮助 |
question |
🟣 紫色 | 问题讨论 |
wontfix |
⚪ 白色 | 不会修复 |
duplicate |
🔵 蓝色 | 重复 Issue |
| `invalid`` | 🔴 红色 | 无效 Issue |
创建标签:
# GitHub CLI
gh label create "bug" --color "d73a4a" --description "Something isn't working"3.5 Issue 最佳实践 #
标题命名规范:
[Bug] 登录页面在移动端样式错乱
[Feature] 添加暗黑模式支持
[Docs] 更新 API 文档
[Refactor] 重构用户模块
[Performance] 优化首页加载速度描述规范:
## 问题描述
简洁描述问题是什么。
## 复现步骤
1. 步骤一
2. 步骤二
3. 步骤三
## 期望结果
应该如何表现。
## 实际结果
实际如何表现。
## 环境信息
- 操作系统:
- 浏览器:
- 版本:
## 相关信息
- 相关 Issue: #123
- 相关 PR: #4563.6 Issue 自动化 #
自动关闭 Issue:
在 PR 或 Commit 中使用关键词:
# 合并 PR 时自动关闭
git commit -m "fix: 修复登录问题,关闭 #123"
# 关键词
fixes #123
closes #123
resolves #123
# 多个 Issue
fixes #123, fixes #456自动标签:
使用 GitHub Actions 自动为新 Issue 添加标签:
# .github/workflows/label.yml
name: Auto Label
on:
issues:
types: [opened]
jobs:
label:
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v7
with:
script: |
const issue = context.payload.issue;
const labels = [];
if (issue.title.includes('[Bug]')) {
labels.push('bug');
}
if (issue.title.includes('[Feature]')) {
labels.push('enhancement');
}
if (labels.length > 0) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
labels: labels
});
}四、Pull Request 完全指南 #
4.1 什么是 Pull Request? #
Pull Request (PR) = 代码合并请求
流程:
- 你在分支上修改代码
- 提交 PR,请求把你的代码合并到主分支
- 其他人审查代码(Code Review)
- 审查通过后合并
PR 的作用:
- 代码审查,保证质量
- 讨论设计方案
- 触发自动化测试
- 记录代码变更历史
4.2 创建 PR #
完整流程:
# 1. Fork 仓库(如果是别人的项目)
# 在 GitHub 页面点击 Fork
# 2. 克隆到本地
git clone git@github.com:your-username/repo.git
# 3. 创建分支
git checkout -b feature/add-login
# 4. 修改代码
# ... 编辑文件 ...
# 5. 提交
git add .
git commit -m "feat: add login page"
# 6. 推送分支
git push origin feature/add-login
# 7. 在 GitHub 页面创建 PR
# 或使用 CLI
gh pr create --title "feat: add login page" --body "描述..."GitHub CLI 创建 PR:
# 交互式创建
gh pr create
# 完整参数
gh pr create \
--title "feat: add login page" \
--body "详见下方描述" \
--base main \
--head feature/add-login \
--reviewer username1,username2 \
--assignee @me \
--label enhancement
# 从模板创建
gh pr create --template4.3 PR 模板 #
创建 .github/pull_request_template.md:
## 变更类型
- [ ] Bug 修复
- [ ] 新功能
- [ ] 重构
- [ ] 文档更新
- [ ] 性能优化
## 变更描述
简洁描述这个 PR 做了什么。
## 相关 Issue
关闭 #123
## 变更内容
- 添加了登录页面
- 实现了表单验证
- 添加了单元测试
## 测试
- [ ] 本地测试通过
- [ ] 单元测试通过
- [ ] E2E 测试通过
## 截图
如果有 UI 变更,添加截图。
## Checklist
- [ ] 代码遵循项目规范
- [ ] 已添加必要的注释
- [ ] 已更新相关文档
- [ ] 已添加测试用例4.4 Code Review #
审查别人的 PR:
- 打开 PR 页面
- 点击
Files changed - 在代码行旁边添加评论
- 点击
Start a review→Submit review
Review 状态:
| 状态 | 含义 |
|---|---|
Comment |
仅评论,不表态 |
Approve |
批准合并 |
Request Changes |
要求修改后重新审查 |
审查建议:
# 好的审查评论
## 建议改进
```suggestion
const result = data.filter(item => item.active);这样更简洁。
提问 #
这里为什么要用 setTimeout?有更好的方案吗?
指出问题 #
⚠️ 这里没有处理错误情况,建议添加 try-catch。
肯定 #
👍 这个重构很棒,代码清晰多了!
### 4.5 PR 合并策略
**Merge(普通合并):**
```bash
# 在 GitHub 页面点击 "Merge pull request"
# 会创建一个 merge commitSquash and Merge(压缩合并):
# 把所有 commit 压缩成一个
# 保持主分支历史整洁Rebase and Merge(变基合并):
# 变基后合并,不产生 merge commit
# 保持线性历史命令行合并:
# 普通 merge
git checkout main
git merge feature/add-login
# Squash merge
git merge --squash feature/add-login
git commit -m "feat: add login page"
# Rebase
git checkout feature/add-login
git rebase main
git checkout main
git merge feature/add-login4.6 PR 最佳实践 #
标题规范:
feat: 添加用户登录功能
fix: 修复登录页面样式问题
docs: 更新 API 文档
refactor: 重构用户模块
test: 添加登录功能测试
chore: 更新依赖版本Commit 规范(Conventional Commits):
feat: 新功能
fix: Bug 修复
docs: 文档变更
style: 代码格式(不影响逻辑)
refactor: 重构
perf: 性能优化
test: 测试
chore: 构建/工具变更
ci: CI 配置变更小而专注的 PR:
| ✅ 好 | ❌ 不好 |
|---|---|
| 只改一个功能 | 同时改多个不相关功能 |
| 200-400 行代码 | 2000+ 行代码 |
| 一眼能看完 | 需要花很长时间审查 |
五、GitHub Actions 自动化 #
5.1 什么是 GitHub Actions? #
Actions = 自动化工作流
可以用来自动:
- 运行测试
- 构建项目
- 部署应用
- 发布包
- 发送通知
5.2 基础语法 #
# .github/workflows/ci.yml
name: CI # 工作流名称
on: # 触发条件
push: # 推送时触发
branches: [main] # 指定分支
pull_request: # PR 时触发
branches: [main]
jobs: # 任务列表
test: # 任务名称
runs-on: ubuntu-latest # 运行环境
steps: # 步骤列表
- name: Checkout # 步骤名称
uses: actions/checkout@v4 # 使用 action
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install
run: npm ci
- name: Test
run: npm test5.3 常用触发条件 #
on:
# 推送时触发
push:
branches: [main, develop]
paths:
- 'src/**' # 只有 src 目录变更才触发
- 'package.json'
# PR 时触发
pull_request:
branches: [main]
# 定时触发
schedule:
- cron: '0 0 * * *' # 每天 0 点
# 手动触发
workflow_dispatch:
inputs:
environment:
description: 'Deploy environment'
required: true
default: 'staging'
# 其他工作流完成后触发
workflow_run:
workflows: ["CI"]
types: [completed]5.4 实用工作流示例 #
CI/CD 工作流:
# .github/workflows/ci.yml
name: CI/CD
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20, 22]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm ci
- run: npm run lint
- run: npm test
- run: npm run build
- name: Upload coverage
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
deploy:
needs: test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- run: npm ci
- run: npm run build
- name: Deploy to Vercel
uses: amondnet/vercel-action@v25
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}发布 npm 包:
# .github/workflows/publish.yml
name: Publish to npm
on:
release:
types: [created]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
registry-url: 'https://registry.npmjs.org'
- run: npm ci
- run: npm run build
- run: npm test
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}自动发布 Release:
# .github/workflows/release.yml
name: Release
on:
push:
branches: [main]
jobs:
release:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'ci skip')"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- name: Release
run: npx semantic-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}5.5 Secrets 管理 #
添加 Secrets:
- 进入仓库 →
Settings→Secrets and variables→Actions - 点击
New repository secret - 填写 Name 和 Value
- 点击
Add secret
使用 Secrets:
steps:
- name: Deploy
run: |
curl -X POST \
-H "Authorization: Bearer ${{ secrets.DEPLOY_TOKEN }}" \
https://api.example.com/deploy常用 Secrets:
| Secret | 用途 |
|---|---|
NPM_TOKEN |
发布 npm 包 |
GITHUB_TOKEN |
自动提供,无需配置 |
VERCEL_TOKEN |
部署到 Vercel |
DOCKER_PASSWORD |
推送 Docker 镜像 |
AWS_ACCESS_KEY_ID |
AWS 服务 |
AWS_SECRET_ACCESS_KEY |
AWS 服务 |
六、高级功能 #
6.1 GitHub Pages #
免费托管静态网站。
配置方式:
- 进入仓库 →
Settings→Pages - Source 选择:
Deploy from a branch: 从分支部署GitHub Actions: 使用 Actions 部署
- 选择分支和目录(
/root或/docs) - 点击
Save
自动部署:
# .github/workflows/pages.yml
name: Deploy to Pages
on:
push:
branches: [main]
permissions:
contents: read
pages: write
id-token: write
jobs:
deploy:
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm run build
- uses: actions/configure-pages@v4
- uses: actions/upload-pages-artifact@v3
with:
path: './dist'
- id: deployment
uses: actions/deploy-pages@v4访问地址:
https://username.github.io/repo-name/6.2 GitHub Packages #
托管 npm/Docker/Maven 等包。
发布 npm 包到 GitHub Packages:
// package.json
{
"name": "@username/package-name",
"publishConfig": {
"registry": "https://npm.pkg.github.com"
}
}# 认证
npm login --scope=@username --registry=https://npm.pkg.github.com
# 发布
npm publish安装:
# .npmrc
@username:registry=https://npm.pkg.github.comnpm install @username/package-name6.3 GitHub Projects #
项目管理工具(看板)。
创建 Project:
- 点击
Projects→New project - 选择模板:
Board、Table、Roadmap - 添加 Issue/PR 到 Project
自动化:
- Issue 创建 → 自动添加到
Todo - PR 创建 → 自动移动到
In Progress - PR 合并 → 自动移动到
Done
6.4 GitHub Discussions #
社区讨论区。
用途:
- 公告
- Q&A 问答
- 功能讨论
- 展示项目
配置:
- 进入仓库 →
Settings - 勾选
Discussions - 选择分类模板
6.5 GitHub Copilot #
AI 编程助手。
功能:
- 代码补全
- 解释代码
- 生成测试
- Code Review
使用:
# 安装 VS Code 插件
# 或使用 GitHub CLI
gh copilot explain "这段代码做了什么"
gh copilot suggest "写一个排序函数"6.6 代码搜索 #
高级搜索语法:
# 搜索代码
filename:package.json lodash
# 搜索仓库
stars:>1000 language:JavaScript
# 搜索 Issue
is:issue is:open label:bug
# 搜索 PR
is:pr is:merged author:username
# 组合搜索
repo:facebook/react is:issue is:open comments:>10搜索快捷键:
/- 聚焦搜索框t- 文件搜索s- 聚焦搜索框
七、实战场景 #
场景 1:开源项目贡献流程 #
# 1. Fork 项目
# 在 GitHub 页面点击 Fork
# 2. 克隆 Fork 的仓库
git clone git@github.com:your-username/project.git
cd project
# 3. 添加上游仓库
git remote add upstream git@github.com:original-owner/project.git
# 4. 同步上游代码
git fetch upstream
git checkout main
git merge upstream/main
# 5. 创建功能分支
git checkout -b fix/issue-123
# 6. 修改代码
# ... 编辑文件 ...
# 7. 提交
git add .
git commit -m "fix: 解决问题 #123"
# 8. 推送到 Fork
git push origin fix/issue-123
# 9. 创建 PR
gh pr create --title "fix: 解决问题" --body "关闭 #123"
# 10. 保持分支更新
git fetch upstream
git rebase upstream/main
git push origin fix/issue-123 --force场景 2:团队协作工作流 #
Git Flow 工作流:
main (生产分支)
└── develop (开发分支)
├── feature/xxx (功能分支)
├── feature/yyy
└── release/1.0.0 (发布分支)
└── hotfix/xxx (紧急修复)GitHub Flow(简化版):
main (主分支)
├── feature/xxx
└── fix/yyy操作流程:
# 1. 从 main 创建功能分支
git checkout main
git pull
git checkout -b feature/user-auth
# 2. 开发并提交
git add .
git commit -m "feat: add user auth"
git push origin feature/user-auth
# 3. 创建 PR
gh pr create
# 4. Code Review
# 在 GitHub 页面审查
# 5. 合并
# Squash and merge
# 6. 删除分支
git branch -d feature/user-auth
git push origin --delete feature/user-auth场景 3:使用 GitHub CLI 提高效率 #
# 查看仓库信息
gh repo view
# 查看我的 PR
gh pr list --author @me
# 查看需要审查的 PR
gh pr list --search "review-requested:@me"
# 查看某个 PR 详情
gh pr view 123
# 检出 PR 到本地
gh pr checkout 123
# 在浏览器打开
gh pr view 123 --web
# 快速添加评论
gh pr comment 123 --body "LGTM!"
# 批准 PR
gh pr review 123 --approve --body "Nice work!"
# 合并 PR
gh pr merge 123 --squash
# 查看 Issue
gh issue list --label bug
# 创建 Issue
gh issue create --title "Bug" --body "描述"
# 关闭 Issue
gh issue close 123
# 查看 Actions 运行状态
gh run list
gh run view
# 监听运行日志
gh run watch
# 查看工作流
gh workflow list
gh workflow view ci.yml
# 手动触发工作流
gh workflow run ci.yml场景 4:自动化发布流程 #
使用 semantic-release 自动发布:
# .github/workflows/release.yml
name: Release
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm run build
- run: npm test
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
run: npx semantic-releasepackage.json 配置:
{
"name": "my-package",
"version": "0.0.0-development",
"scripts": {
"semantic-release": "semantic-release"
},
"repository": {
"type": "git",
"url": "https://github.com/username/my-package.git"
}
}八、常见问题 #
Q1: 如何撤销已推送的 Commit? #
# 方法一:revert(推荐,安全)
git revert <commit-hash>
git push
# 方法二:reset(危险,会丢失提交)
git reset --hard <commit-hash>
git push --force
# 方法三:交互式 rebase
git rebase -i HEAD~3
# 把要删除的 commit 标记为 drop
git push --forceQ2: 如何解决合并冲突? #
# 1. 拉取最新代码
git fetch origin
git merge origin/main
# 2. 查看冲突文件
git status
# 3. 手动解决冲突
# 打开冲突文件,找到 <<<<<<< HEAD 标记
# 选择要保留的代码,删除冲突标记
# 4. 标记为已解决
git add <resolved-file>
# 5. 完成合并
git commit
# 或继续 rebase
git rebase --continue冲突标记说明:
<<<<<<< HEAD
const name = 'current'; // 当前分支的代码
=======
const name = 'incoming'; // 要合并进来的代码
>>>>>>> feature-branchQ3: 如何修改已推送的 Commit 信息? #
# 修改最近一次 commit
git commit --amend -m "新的提交信息"
git push --force
# 修改历史 commit(交互式 rebase)
git rebase -i HEAD~3
# 把 pick 改为 reword
# 保存后会打开编辑器修改信息
git push --forceQ4: 如何恢复已删除的分支? #
# 查找已删除分支的 commit
git reflog
# 找到分支删除前的 commit hash
# 恢复分支
git checkout -b <branch-name> <commit-hash>
# 或者使用 GitHub CLI
gh api repos/{owner}/{repo}/branches/{branch}Q5: 如何清理已合并的分支? #
# 删除本地已合并的分支
git branch --merged main | grep -v "^\*\|main" | xargs git branch -d
# 删除远程已合并的分支
git branch -r --merged origin/main | grep -v "main" | sed 's/origin\//:/' | xargs git push
# 使用 GitHub CLI
gh pr list --state merged --json headRefName --jq '.[].headRefName' | \
xargs -I {} git push origin --delete {}Q6: 如何处理大文件? #
# 使用 Git LFS
git lfs install
git lfs track "*.psd"
git lfs track "*.mp4"
git add .gitattributes
git commit -m "chore: setup git lfs"
git pushQ7: 如何更改仓库的默认分支? #
- 进入仓库 →
Settings→Default branch - 点击切换按钮
- 选择新分支
- 点击
Update
命令行:
# 重命名分支
git branch -m main new-default
git push origin -u new-default
git push origin --delete main
# 然后在 GitHub 设置中更改默认分支Q8: 如何处理敏感信息泄露? #
如果只是提交了敏感信息(未推送):
# 从暂存区移除
git reset HEAD <file>
# 从历史中移除
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch path/to/sensitive-file" \
--prune-empty --tag-name-filter cat -- --all如果已推送:
- 立即更改泄露的密钥/密码
- 联系 GitHub Support 请求删除敏感信息
- 使用 BFG Repo-Cleaner 清理历史:
# 安装 BFG
brew install bfg
# 删除敏感文件
bfg --delete-files sensitive-file.txt
git reflog expire --expire=now --all
git gc --prune=now --aggressive
git push --force九、命令速查表 #
Git 基础命令 #
| 命令 | 说明 |
|---|---|
git init |
初始化仓库 |
git clone <url> |
克隆仓库 |
git status |
查看状态 |
git add <file> |
添加文件 |
git add . |
添加所有文件 |
git commit -m "msg" |
提交 |
git push |
推送 |
git pull |
拉取 |
git fetch |
获取远程更新 |
git branch |
查看分支 |
git branch <name> |
创建分支 |
git checkout <branch> |
切换分支 |
git checkout -b <branch> |
创建并切换分支 |
git merge <branch> |
合并分支 |
git rebase <branch> |
变基 |
git log |
查看日志 |
git diff |
查看差异 |
git stash |
暂存更改 |
git stash pop |
恢复暂存 |
git reset --hard |
重置到上一次提交 |
git revert <commit> |
撤销提交 |
GitHub CLI 命令 #
| 命令 | 说明 |
|---|---|
gh auth login |
登录 |
gh auth status |
查看登录状态 |
gh repo create |
创建仓库 |
gh repo clone |
克隆仓库 |
gh repo view |
查看仓库 |
gh issue create |
创建 Issue |
gh issue list |
列出 Issue |
gh issue view <number> |
查看 Issue |
gh issue close <number> |
关闭 Issue |
gh pr create |
创建 PR |
gh pr list |
列出 PR |
gh pr view <number> |
查看 PR |
gh pr checkout <number> |
检出 PR |
gh pr merge <number> |
合并 PR |
gh pr review <number> |
审查 PR |
gh run list |
列出运行 |
gh run view |
查看运行 |
gh workflow list |
列出工作流 |
gh workflow run |
触发工作流 |
gh release create |
创建发布 |
gh browse |
在浏览器打开 |
Issue/PR 快捷键 #
| 快捷键 | 说明 |
|---|---|
c |
创建 Issue |
a |
添加 assignee |
l |
添加 label |
m |
设置 milestone |
p |
设置 project |
/ |
聚焦搜索框 |
? |
显示快捷键帮助 |
附录:推荐资源 #
| 资源 | 链接 | 说明 |
|---|---|---|
| GitHub 官方文档 | docs.github.com | 权威文档 |
| GitHub Skills | skills.github.com | 交互式学习 |
| GitHub CLI 手册 | cli.github.com/manual | CLI 文档 |
| GitHub Actions 市场 | github.com/marketplace | Actions 模板 |
| Pro Git 书籍 | git-scm.com/book | Git 权威书籍 |
| Conventional Commits | conventionalcommits.org | 提交规范 |
| Semantic Release | semantic-release.gitbook.io | 自动发布 |
最后更新:2026-03-29
继续阅读
返回文章列表