目标:简单、可回溯、可发布。默认仅你一人开发;必要时支持热修复与版本化。
一、分支模型(最简)
-
main:稳定可发布分支,只合并经过自测的代码。 -
dev:日常开发分支。 -
feature/*:大改动/新功能临时分支,完成后合回dev并删除。
极简可只用
main + dev;重大改动临时开feature/*。
二、一次性全局配置(建议)
git config --global user.name "你的名字"
git config --global user.email "you@example.com"
git config --global init.defaultBranch main
git config --global pull.rebase true # 默认rebase,保持线性历史
git config --global core.autocrlf input # 统一换行
git config --global fetch.prune true # 拉取时清理已删远端分支
三、仓库初始化与基础文件
mkdir myapp && cd myapp
git init
# .gitignore(按技术栈生成)
# https://www.toptal.com/developers/gitignore
echo "* text=auto" > .gitattributes
echo "# MyApp" > README.md
git add .
git commit -m "chore: init repo"
.gitignore忽略:依赖目录(node_modules/、.venv/)、构建产物、缓存、IDE配置、日志等。
四、提交规范(Conventional Commits 摘要)
- 小步提交、语义化信息:
feat: 新增功能
fix: 修复缺陷
docs: 文档更新
refactor: 代码重构(无特性/修复)
perf: 性能优化
test: 测试相关
chore: 构建/脚手架/杂项
- 示例:
feat(login): 支持JWT刷新
五、日常开发节奏(模板)
# 开工:同步 dev(线性历史)
git checkout dev && git pull --rebase
# 开功能分支
git checkout -b feature/xyz
# ...编码 -> 小步提交
git add . && git commit -m "feat(xyz): 初版实现"
# 收尾:整理历史并合回dev
git fetch origin && git rebase origin/dev
git checkout dev
git merge --ff-only feature/xyz
git branch -d feature/xyz
git push
六、发布与版本标签(Tag)
# 确认dev稳定后合入main
git checkout main && git pull --rebase
git merge --ff-only dev
# 打附注标签(推荐)
git tag -a v0.1.0 -m "v0.1.0: 初次可用版本"
git push origin main
git push origin v0.1.0
Tag 用于标记“可发布里程碑”,方便回溯与对外发布。
七、热修复流程(Hotfix)
# 基于 main 开分支
git checkout main && git pull --rebase
git checkout -b hotfix/urgent-bug
# ...修复
git add . && git commit -m "fix: 处理token竞态"
# 合回 main 并打补丁版本
git checkout main && git merge --ff-only hotfix/urgent-bug
git tag -a v0.1.1 -m "v0.1.1: 修复token竞态"
git push origin main && git push origin v0.1.1
# 同步回 dev
git checkout dev && git pull --rebase
git merge --ff-only main && git push
git branch -d hotfix/urgent-bug
八、变更日志(可选但推荐)
-
简单:
git log --oneline v0.1.0..v0.1.1 -
工具化(按提交类型分组):
conventional-changelog、cz-git等。
九、Pre-commit 钩子(提交前自动检查)
多语言通用(pre-commit):
pip install pre-commit
pre-commit sample-config > .pre-commit-config.yaml
pre-commit install
Node 项目(husky + lint-staged):
pnpm add -D husky lint-staged
npx husky init
# .husky/pre-commit 中添加:
# npx lint-staged
# package.json:
# "lint-staged": { "*.{ts,tsx,js}": ["eslint --fix", "git add"] }
十、回滚策略(选正确方式)
- 已推送/公开历史:用
revert(安全):
git revert
git push
- 未推送/本地历史:可用
reset(危险):
git reset --hard HEAD~1
十一、远程与备份
-
私密项目用私有仓库;启用双重验证(2FA)。
-
多远端可命名:
origin(主)、backup(镜像备份)。
git remote add backup
git push --mirror backup
十二、效率别名(建议)
git config --global alias.lg "log --oneline --decorate --graph --all"
git config --global alias.st "status -sb"
git config --global alias.co "checkout"
git config --global alias.br "branch"
git config --global alias.cm "commit -m"
十三、rebase vs merge(何时用)
-
单人开发:默认
--rebase,保持线性历史,便于回溯。 -
团队协作:避免对已推送分支做 rebase(会改写历史)。
十四、常见故障排查
-
rebase 冲突:按文件解决后
git add,继续:git rebase --continue;放弃:git rebase --abort。 -
误删/误 reset:尝试
git reflog找到 commit,再git checkout -b rescue。 -
推送被拒:先
git pull --rebase同步,再推送。
十五、一页式速查(可打印)
-
日常:
dev拉最新 →feature/*开发 → 小步提交 →rebase到dev→merge --ff-only→ 推送。 -
发布:
dev → main,打tag(vX.Y.Z),推送代码+标签。 -
热修复:
main开hotfix/*→ 修复 → 回main打补丁 tag → 合回dev。 -
回滚:公开历史用
revert,本地未推送可reset。 -
整洁:
pull.rebase=true、fetch.prune=true、.gitignore、pre-commit 钩子。
照此执行,可获得:清晰线性历史、稳定可发布版本、可回溯的里程碑,以及最小化的日常心智负担。
- 1本网站名称:MuQYY
- 2本站永久网址:www.muqyy.top
- 3本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长 微信:bwj-1215 进行删除处理。
- 4本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
- 5本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
- 6本站资源大多存储在云盘,如发现链接失效,请联系我们我们会在第一时间更新。






暂无评论内容