(七)快进与三方合并
1. 合并已经分叉的两条修改
回到 main,把 README 的运行说明补充成“使用 Python 3.12 运行”,保存为文档提交 D:
# README 已补充解释器说明,main 在 B 之后取得自己的新提交。
git add -- README.md
git commit -m "在运行说明中写明Python版本"
# 当前 main 接收功能分支的修改。
git merge feat/summary -m "合入总阅读时长统计"
python check_reading.py
git log --oneline --graph --decorate -8
共同提交是 B;C 修改程序与检查,D 修改说明。Git 比较 B 到 C 和 B 到 D 两份变化,把它们结合成新提交 M。M 有两个父提交,表示两条历史在这里汇合。测试应同时通过达标次数与总分钟数的检查。
合并没有文本冲突,也要运行检查。例如一边改函数参数,另一边在不同文件中增加旧参数的调用,文本可以合上,运行却可能失败。分支与合并
2. 只有一边前进时直接移动指向
再从 main 建立 docs/check-command,只补充一段检查说明并提交。main 在这期间没有其他提交,回到 main 后可以直接前进到这个文档提交:
# 新分支中编辑 README 并保存;提交后切回 main。
git switch -c docs/check-command
# 在编辑器补充说明后执行以下两条命令。
git add -- README.md
git commit -m "补充检查命令的输出说明"
git switch main
# 只接受快进:把 main 前进到包含它的新提交,不额外生成合并提交。
git merge --ff-only docs/check-command
git branch -d docs/check-command
这就是 fast-forward,简称快进。--ff-only 发现历史已经分叉时会停止,留下两边原来的提交。branch -d 删除已经合入当前历史的本地分支名,提交仍可从 main 到达。