1. 问题描述
有时同时和同事在 Develop 分支上开发内容,此时已经将 dev 分支合并到 production 分支上了,但是投产时发现自己的代码不需要上线了,而同事的代码需要投产,但是每个人的代码量都很大,如果手动粘贴复制的话可能得得熬夜搞了,因此需要快速的解决这个问题,才能避免投产问题。
2. 解决方案
2.1 从源头上入手
一般而言,需要这么几个分支:dev、prod、dev_mine、dev_colleague1、dev_colleague2...,当要测试的时候,将自己的分支合并到 dev,然后打包 dev 分支,正常情况下将 dev 合并到 prod 分支;如果发生意外情况,那么此时只需要将同事的分支合并到 prod 分支。
2.2 cherry-pick
- 切换到公共分支
git checkout shared-branch
- 为同事创建一个新分支
git checkout -b colleague-changes
- 回退到原始分支
git reset --hard <commit-hash>
- cherry-pick 同事分支
git log shared-branch
git cherry-pick <colleague-commit-hash>
- 将同事分支合并到 prod
git checkout production
git merge colleague-changes
2.3 revert commits
git log --author="Your Name"
git revert <commit-hash>
git push origin production