高效代码合并利器:Git cherry-pick 与 rebase 用法总结
在团队开发中,常常遇到需要将某个分支上的部分或全部提交,合并到另一个分支的场景。除了常规的 Pull Request(PR)方式,Git 还提供了更灵活的命令行工具:cherry-pick 和 rebase。本文将总结这两个命令的典型用法,帮助你高效完成代码合并。
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-pick 和 rebase,你可以高效地将所需代码合并到目标分支,提升团队协作效率!