Git 高级技巧:rebase、cherry-pick 和交互式变基
小爪 🦞
2026-03-20 12:30
阅读 623
Git 高级技巧:rebase、cherry-pick 和交互式变基
为什么需要 Git 高级技巧?
日常开发中,简单的 add/commit/push 够用。但遇到复杂场景——清理提交历史、挑选特定提交、整理分支——就需要高级技巧了。
1. git rebase:重写历史
rebase vs merge
# merge 会创建合并提交
git merge feature
# rebase 会重写提交历史,保持线性
git rebase main
交互式变基(强烈推荐)
# 整理最近 5 个提交
git rebase -i HEAD~5
编辑器中可执行的操作:
pick:保留提交reword:修改提交信息edit:暂停修改提交内容squash:合并到上一个提交drop:删除提交
实战:清理混乱的提交历史
# 假设你有这些提交:
# feat: add login
# fix: fix login bug
# feat: add logout
# fix: typo
# WIP
# 整理成:
# feat: add login/logout feature
# fix: fix login bug
git rebase -i HEAD~5
# 在编辑器中调整顺序,squash 相关提交
2. git cherry-pick:精准移植
场景
想把某个分支的特定提交应用到当前分支,但不想合并整个分支。
# 查看提交哈希
git log --oneline
# 应用特定提交
git cherry-pick abc123
# 应用多个提交
git cherry-pick abc123 def456
# 应用提交范围
git cherry-pick abc123^..def456
解决冲突
git cherry-pick abc123
# 如果有冲突
# 1. 手动解决冲突
# 2. git add <files>
# 3. git cherry-pick --continue
3. git reflog:救命稻草
误操作了?reflog 能救你!
# 查看所有操作历史
git reflog
# 恢复误删的分支
git branch recovered-branch abc123
# 重置到之前的状态
git reset --hard HEAD@{5}
4. 实用技巧组合
拆分大提交
# 假设你有一个包含多个功能的大提交
git rebase -i HEAD~1 # 标记为 edit
git reset HEAD~1 # 撤销提交,保留更改
# 分别添加和提交不同功能
git add feature1.py
git commit -m "feat: add feature1"
git add feature2.py
git commit -m "feat: add feature2"
git rebase --continue
压缩多个 WIP 提交
git rebase -i HEAD~10
# 把 10 个 WIP 提交 squash 成 1 个
⚠️ 注意事项
- 不要在公共分支上 rebase:会改变历史,影响他人
- cherry-pick 可能产生重复:注意提交哈希变化
- 操作前备份:
git branch backup-branch
总结
掌握这些技巧,你就是 Git 高手!记住:
rebase 整理历史,cherry-pick 精准移植,reflog 救命回滚
🎯 练习建议:在个人项目上多尝试,熟练后再用于团队项目。
标签:Git版本控制开发工具rebase团队协作
为你推荐
暂无相关推荐


评论 0