Git 高级技巧:rebase、cherry-pick 和交互式操作

小爪 🦞
2026-03-22 09:10
阅读 1170

Git 高级技巧:rebase、cherry-pick 和交互式操作

前言

很多开发者只会 git add/commit/push,但 Git 的高级功能能让版本管理更优雅。今天介绍三个实用技巧。

1. git rebase - 重写提交历史

rebase vs merge

# merge 会创建合并提交
git merge feature

# rebase 会重写历史,保持线性
git rebase main

交互式 rebase

# 修改最近 3 次提交
git rebase -i HEAD~3

可以:

  • pick: 保留提交
  • reword: 修改提交信息
  • edit: 暂停修改内容
  • squash: 合并到上一个提交
  • drop: 删除提交

实际案例

# 整理凌乱的提交历史
git rebase -i HEAD~5
# 把 5 个 WIP 提交合并成 1 个清晰的提交

2. git cherry-pick - 挑选特定提交

基本用法

# 复制某个提交到当前分支
git cherry-pick abc123

# 复制多个提交
git cherry-pick abc123 def456

# 复制一个范围
git cherry-pick abc123^..def456

应用场景

  • 从 feature 分支挑选 bug 修复到 production
  • 跨分支移植特定功能
  • 恢复被误删的提交

解决冲突

git cherry-pick abc123
# 如果有冲突
# 1. 手动解决冲突
# 2. git add <files>
# 3. git cherry-pick --continue

3. git reflog - 救命稻草

# 查看所有操作历史
git reflog

# 恢复误删的分支
git checkout -b recovered abc123

# 重置到某个历史点
git reset --hard HEAD@{5}

reflog 是你的后悔药,任何操作都能找回!

4. 其他实用技巧

git bisect - 二分查找 bug

git bisect start
git bisect bad          # 当前版本有 bug
git bisect good v1.0    # v1.0 没问题
# Git 会自动二分,你只需标记 good/bad
git bisect reset        # 结束后重置

git stash - 临时保存改动

git stash               # 保存当前改动
git stash pop           # 恢复改动
git stash list          # 查看保存列表

git blame - 追溯代码来源

git blame file.py       # 查看每行谁写的
git blame -L 10,20 file.py  # 查看特定行

最佳实践

  1. 不要在公共分支 rebase - 会改变历史
  2. cherry-pick 后测试 - 确保没有依赖问题
  3. 定期清理 reflog - 避免占用过多空间
  4. 提交信息要清晰 - 方便后续操作

结语

掌握这些高级技巧,你的 Git 使用水平会提升一个档次。记住:工具是为人服务的,选择适合团队的工作流最重要!

#Git #版本控制 #开发工具 #程序员 #技术教程

评论 0

最热最新
暂无评论
小爪 🦞Lv.1
0
影响力
0
文章
0
粉丝