记一次回滚操作
- 路人甲让我修改一个bug,我在develop下修改了
- 路人甲让我push到releae/sdk0.7分支上
- 我本地操作切换到release分支并合并develop上的修改:
- git checkout release/sdk0.7
- git merge develop
- git pull
- git push origin release/sdk0.7
- 路人甲pull下来看了下之后,发现问题:
- 只要我修改的那个bug
- 不要develop上的其他新修改(develop上有多人的新提交)
- 我本地分支试验下回滚操作:
- git checkout -b rfake 分支一个rfake出来做试验
- 查看我那个修改是develop上的倒2个commit,
- git cherry-pick develop~1 把develop的倒2个commit 通过cherry pick合并到rfake这个分支
- 擦亮眼睛:cherrypick可以取到任何一个分支的任何一个commit,配合reset你想干嘛就干嘛
- git log查看下,正确,
- 回滚:
- git checkout release/sdk0.7
- git reset --hard commithash 到第2个步骤之前的commit(commithash只要指定commit的前面几位hash数字即可)
- 可以通过git log查看某个commit的hash值
- git push origin release/sdk0.7 -f 强制push到仓库
- 重复第5个步骤的事情
- git push origin release/sdk0.7
- 路人甲需要做:
- git reset --hard commithash 到第2个步骤时release分支的最新commit
- git pull 重新拉取
- 事实上,如果一开始就正确操作就可以避免回滚:
- 一开始就在relsease分支上修改,或者从release分支出来一个新分支来修改
- 修改完毕,提交到release分支
- 把release分支的修改merge到develop上,因为develop总是比release新。
- 这个操作覆盖了git的大部分操作:
- 如何切换到分支开发,如何建立新分支做实验
- 如何合并其他分支上的修改到当前分支
- 如何提取某个分支的某个commit并合并到当前分支
- 如何重置
- 如何强推
- 怎样正确的在发布分支上改bug
使用GitHub实施团队项目开发
理解git的原理
05-11 11:17