高效代码合并利器:Git cherry-pick 与 rebase 用法总结

92 阅读2分钟

高效代码合并利器:Git cherry-pick 与 rebase 用法总结

在团队开发中,常常遇到需要将某个分支上的部分或全部提交,合并到另一个分支的场景。除了常规的 Pull Request(PR)方式,Git 还提供了更灵活的命令行工具:cherry-pickrebase。本文将总结这两个命令的典型用法,帮助你高效完成代码合并。


1. cherry-pick:精准挑选提交

git cherry-pick 可以将指定的一个或多个提交,应用到当前分支。适用于只需要部分提交、无需合并整个分支的场景。

基本用法

# 切换到目标分支
git checkout <target-branch>

# 挑选一个提交
git cherry-pick <commit-hash>

# 挑选多个提交
git cherry-pick <commit1> <commit2> <commit3>

实战场景

假设你要把 development 分支上 commit message 包含 “RA3.4” 的提交,合并到 RA3.4 分支:

git checkout RA3.4
git log development --grep="RA3.4"
git cherry-pick <commit-hash>

注意事项

  • 如果 cherry-pick 的提交与当前分支有冲突,Git 会提示你解决冲突。
  • 冲突解决后,执行 git cherry-pick --continue 继续后续操作。

2. rebase:批量迁移提交

git rebase 可以将一个分支上的所有提交,批量“搬运”到另一个分支之上。适用于需要整体迁移分支历史的场景。

基本用法

# 切换到目标分支
git checkout <target-branch>

# 将 source-branch 的提交迁移到当前分支
git rebase <source-branch>

实战场景

假设你要把 OMB-1680 分支上的提交,直接应用到 development 分支:

git checkout development
git rebase OMB-1680

注意事项

  • rebase 过程中遇到冲突,需要手动解决,然后执行 git rebase --continue
  • rebase 会重写提交历史,适合个人或小团队操作,协作时需谨慎。

3. cherry-pick 与 rebase 的选择

  • cherry-pick:只要部分提交,精准合并,适合补丁式操作。
  • rebase:要整个分支的提交,批量迁移,适合整理分支历史。

4. 常见问题与建议

  • 已被跟踪的文件,.gitignore 无法阻止,需要用 git rm --cached 移除。
  • 合并过程中遇到冲突,建议按顺序逐步解决,保证代码稳定。
  • 合理使用 commit message 和分支命名,方便后续查找和 cherry-pick。

5. 参考链接


通过灵活运用 cherry-pickrebase,你可以高效地将所需代码合并到目标分支,提升团队协作效率!