学习前提

完成本系列暂存、分支、差异检查和标签章节。

使用Git 2.35+与Bash兼容终端(Windows可用Git Bash)。每章完整代码都会创建独立临时目录;仅在练习仓库运行。git config仅修改该仓库,示例身份不是你的真实提交身份。临时目录不会自动删除,可在完成后自行清理。

本课完成后你能做什么

把分支、差异审查、验证和标签串成可重复流程。

先理解机制

一个可维护的流程从明确目标开始:本例给笔记增加可检查的学习清单。功能分支承载独立改动,提交信息解释目的,评审关注与main相比发生了什么。

main...feature/checklist的三点比较从共同祖先查看功能侧差异,不等于任意两点比较。真实PR中还需描述测试、边界和兼容性,并遵守项目的分支保护与评审要求。

rebase会把提交重放到新基点,通常产生新提交编号;cherry-pick把选定提交的改动应用到当前分支。两者都可能冲突。初学阶段先掌握合并,不要擅自重写其他人正在使用的共享历史。

Git Flow、短生命周期功能分支和主干开发是不同协作策略。小型教程项目可以采用功能分支、验证、评审、合并、打标签的简洁流程;不要为使用工具而机械增加长期分支。

可运行示例

lab=$(mktemp -d)
cd "$lab"
git init -b main .
git config user.name "Honeysuck Learner"
git config user.email 'learner'@'example.invalid'
git config commit.gpgsign false
git config core.autocrlf false
printf 'Start learning\n' > notes.txt
git add notes.txt
git commit -m "Start learning notes"
git switch -c feature/checklist
printf 'read\npractice\nreview\n' > checklist.txt
git add checklist.txt
git commit -m "Add three-step study checklist"
git diff --check main...feature/checklist
git diff main...feature/checklist -- checklist.txt
test "$(wc -l < checklist.txt | tr -d ' ')" = 3
git switch main
git merge --no-ff feature/checklist -m "Merge verified checklist"
test "$(wc -l < checklist.txt | tr -d ' ')" = 3
git tag -a v1.0.0 -m "Release verified checklist"
git log --graph --oneline --all
git status --short

推演与验证

差异检查和三行验证通过后合并,再验证合并结果并打标签。最终状态干净,v1.0.0指向合并提交,checklist.txt保存read、practice、review三行。

常见错误与边界

这里的行数检查仅验证教学清单结构,不代表真实软件测试。本示例没有创建真实托管PR或自动部署;提交到业务仓库前还要运行该项目自己的测试。

动手练习

增加第四个步骤publish,并同步更新验证条件,再完成新版本提交。

参考解法与理由

在新功能分支改为四行,检查条件改为4,重新审查并合并。为新结果创建v1.1.0等新标签,不移动已发布的v1.0.0;版本号按项目规则选择。

进一步阅读