除了基本的提交和合并,Git提供了强大的历史操作和调试工具。这三个命令是区分中级Git用户和高级用户的命令。
变基(Rebase)
变基将你的提交重放到另一个分支之上,产生没有合并提交的线性历史。基本用法:在feature分支上工作而main已向前移动后,git rebase main更新你的feature分支从最新的main提交开始。冲突按每个提交解决(而非像合并时那样全部一起)。交互式变基(git rebase -i HEAD~5)让你重新排序、合并、编辑或删除最后5个提交——在PR之前清理凌乱的提交历史是必不可少的。黄金法则:永远不要变基已经被推送到其他人正在工作的共享远程分支的提交。
精选提交(Cherry-pick)
精选提交将特定提交从一个分支应用到另一个分支,不合并整个分支。使用案例:一个错误修复被提交到feature分支,你想将其反向移植到发布分支,而不合并整个功能。
git checkout release-1.0
git cherry-pick abc1234 # 将任何分支的提交abc1234应用到当前分支
精选提交创建一个具有相同更改但不同哈希的新提交。对于热修复、反向移植和长期分支之间的选择性更改很有用。
二分查找(Bisect)
Git bisect通过提交历史执行二进制搜索,找出哪个提交引入了错误。开始bisect,标记当前有问题的提交,标记已知的良好提交,Git自动检出中间点。你测试,标记为好或坏,Git缩小范围——在O(log n)步内找到罪魁提交。
git bisect start
git bisect bad # 当前提交有问题
git bisect good v2.0 # v2.0标签是已知的好版本
# Git检出中间点——运行你的测试,然后:
git bisect good # 或
git bisect bad
# 重复直到Git识别出引入问题的提交
git bisect reset # 完成后返回原始HEAD
当回归出现但提交范围很大时,bisect非常宝贵——它将几小时的手动调查变成几分钟的系统搜索。




