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
推荐工作流
- 每天早上先
git pull同步最新代码。 - 新功能从
main切出feature/*分支。 - 小步提交,保持提交信息清晰。
- 完成前
git rebase main整理历史(可选)。 - 发起 Pull Request 进行代码审查。
- 合并后删除远程功能分支。
评论功能基于 Giscus(GitHub Discussions)——在 repo 启用 Discussions 后,到 giscus.app 获取仓库 ID 填入
src/_data/site.json即可启用。