第一次在团队里用 Git,我把 main 分支保护规则给绕晕了
前两天给 He4rt 社区的 4noobs 项目改 README,就换个 badge、调个 logo 对比度、加个目录索引,改动加起来不足 50 行。按理说十分钟能合进去,结果我在本地
后来理顺的最小可行流程:
下一篇
刷到第 N 条「必背八股文」帖子时,我意识到自己可能连题目都看不懂 →
git checkout -b fix/readme-typo 又删又建折腾了三回,硬是把个「文档类首贡」拖成了两小时的心理建设实录。卡住的根本不是命令,是那种「万一我把 main 推挂了怎么办」的虚张声势。以前独自写代码,git push origin master 一把梭,从没想过保护分支、required reviews、status checks 这些东西。真进了别人的仓库,看着 Settings → Branches → Branch protection rules 里密密麻麻的勾选框,突然发现自己连「能不能直接推」这件事都不敢确定。
几个把我绕进去的坑:
git push之后终端吐出的那个Create a pull request链接,我以为点一下就合并了。实际上那是去 GitHub 网页再走一遍「New pull request → base: main → compare: fix/readme-typo → Create」的流程。Push 只是把分支推到远端,PR 才是正式求合并。- 保护分支开启了「Require a pull request before merging」和「Require approvals」,我本地测完
git push origin fix/readme-typo就觉得大功告成,回头一看 PR 页面写着「This branch has no commits in common with the base branch」。原因是我基于一个旧的main切的分支,中间 upstream 已经合了别人的提交,没git pull --rebase upstream main同步一下,历史直接断层。 - Commit message 写成
update readme被 CI 里的 commitlint 拦住了。项目用 Conventional Commits 规范,必须是docs: update README badge and add TOC这种格式。改了三次 message 才过检,git commit --amend现在肌肉记忆里了。 .github目录下的PULL_REQUEST_TEMPLATE.md和CONTRIBUTING.md我以为是生成的,没仔细看。填 PR 描述时才发现模板里要求列「Related issue」「Type of change」「Checklist」三段,我空着提交,reviewer 直接评论「Please fill the template」。原来贡献指南不是摆设,是真要照着填。
后来理顺的最小可行流程:
# 1. 同步上游最新 main
git fetch upstream
git checkout main
git rebase upstream/main
# 2. 切新分支,名字按约定:type/short-desc
git checkout -b docs/readme-badge-and-toc
# 3. 改代码,分小步提交,message 守规范
git add README.md
git commit -m "docs: replace outdated badge and add table of contents"
# 4. 推分支,顺手把上游设成 upstream(方便后续 rebase)
git push -u origin docs/readme-badge-and-toc
# 5. 终端给的链接打开,按模板塌实填 PR 描述
# - What: 改了什么
# - Why: 为什么改
# - Checklist: 测过没、文档改没、breaking change 有没合进去那一刻 CI 全绿、reviewer 批个 👍,才发现所谓「团队协作」无非就是:别动别人的分支、别推烂 main、把上下文写清楚让审核的人少点脑补。那些保护规则、模板、lint,全是为了把「靠自觉」变成「靠流程」。
下回再改别人的仓库,我大概率还会先 git status 确认三遍当前分支名。但至少不用再对着「Create pull request」按钮发呆十分钟了。
免费 AI 工具箱 · 全部完全免费
同类方向的延伸案例可以参考AI大模型变现案例库,有不少直接可参考的案例。