Git 高效工作流指南

Git 核心概念

Git 是分布式版本控制系统,核心概念:

  • 工作区(Working Directory):磁盘上看到的项目文件。
  • 暂存区(Stage / Index):准备提交到仓库的改动快照。
  • 本地仓库(Repository):.git 目录,保存完整项目历史。
  • 远程仓库(Remote):团队协作共享的仓库,如 GitHub、GitLab、Gitee。

Commit、Branch、Stage 的关系

  • git add 把改动从工作区放入暂存区。
  • git commit 把暂存区内容保存为一次提交(commit)。
  • git branch 创建独立开发线,最终通过 git merge 合并到主分支。

日常命令速查表

# 初始化仓库
git init

# 克隆远程仓库
git clone https://github.com/user/repo.git

# 查看状态
git status

# 添加文件到暂存区
git add filename
git add .                 # 添加所有改动

# 提交
git commit -m "描述"

# 查看历史
git log --oneline
git log --graph --all --oneline

# 推送到远程
git push origin main

# 拉取并合并
git pull origin main

# 查看差异
git diff
git diff --cached

分支管理策略

推荐两种常见策略:

Git Flow

  • main:稳定生产分支。
  • develop:集成开发分支。
  • feature/*:新功能分支。
  • release/*:发布分支。
  • hotfix/*:紧急修复分支。

GitHub Flow

  • main 保持可部署。
  • 所有改动从 main 切出 feature 分支。
  • 通过 Pull Request 进行代码审查后合并。

常用分支命令:

# 创建并切换分支
git checkout -b feature/login
# 或
git switch -c feature/login

# 切换分支
git checkout main
git switch main

# 合并分支
git merge feature/login

# 删除已合并分支
git branch -d feature/login

# 强制删除未合并分支
git branch -D feature/login

.gitignore 最佳实践

.gitignore 告诉 Git 忽略哪些文件。建议规则:

# 依赖目录
node_modules/
vendor/
__pycache__/

# 构建产物
dist/
build/
*.log

# 密钥与配置
.env
.env.local
*.pem
*.key

# IDE 与系统文件
.idea/
.vscode/
.DS_Store
Thumbs.db

# 临时文件
*.tmp
*.swp

匹配规则:

  • * 匹配任意字符(不含 /)。
  • **/ 匹配任意层级目录。
  • ! 取反。
  • / 开头表示从仓库根目录匹配。

常见问题解决

1. 撤销工作区改动

git checkout -- filename
# 或新版
git restore filename

2. 撤销已暂存文件

git reset HEAD filename
# 或新版
git restore --staged filename

3. 修改最后一次提交

git commit --amend -m "新描述"

4. 回退到指定版本

# 保留改动到工作区
git reset --soft HEAD~1

# 保留改动但不保留暂存
git reset --mixed HEAD~1

# 彻底放弃改动(谨慎)
git reset --hard HEAD~1

5. 合并冲突

git pull origin main
# 编辑冲突文件,解决后
git add .
git commit -m "fix: merge conflict"

6. 忽略已提交文件

git rm --cached filename
echo "filename" >> .gitignore

7. 提交信息规范建议

feat: 添加登录功能
fix: 修复分页错误
docs: 更新 README
refactor: 重构用户服务

8. 查看远程地址

git remote -v

9. 创建标签

git tag -a v1.0.0 -m "release 1.0.0"
git push origin v1.0.0

10. 暂存临时改动

git stash
git stash pop
git stash list

推荐工作流

  1. 每天早上先 git pull 同步最新代码。
  2. 新功能从 main 切出 feature/* 分支。
  3. 小步提交,保持提交信息清晰。
  4. 完成前 git rebase main 整理历史(可选)。
  5. 发起 Pull Request 进行代码审查。
  6. 合并后删除远程功能分支。
评论

评论功能基于 Giscus(GitHub Discussions)——在 repo 启用 Discussions 后,到 giscus.app 获取仓库 ID 填入 src/_data/site.json 即可启用。