在git上翻船的前端老同学

事情经过:
我之前的开发流程都是创建一个功能分支,功能分支开发完再合到测试分支,测试分支测试通过后,把测试分支合并到预发分支,预发测试通过后再把预发分支合并到生产分支。现在到开发流程是,先创建功能分支,功能开发完后合并到测试分支,测试通过后,再把功能分支合并到预发分支,注意这里不再是把测试分支合并到预发分支,因为测试分支会有其他同学提交到测试东西。我的操作是在本地基于测试分支建立了一个分支并将其与远程预发分支关联,拉取远程代码的最新东西,然后将该分支的东西合并到我的本地功能分支,这样我的功能分支不仅有了预发分支上的东西,还有了测试分支上的东西,然后我提交了功能分支,并通过gitlab的merge,把功能分支合并到了预发分支,这样我就将测试分支上的东西带到了远程的预发分支,从而污染了预发分支。
解决:

  1. 先将预发分支回退
git reset --hard [版本号] //先回退
git push --force // 强推(相当于用之前的版本覆盖掉不要的版本)

  1. 从远程master拉一个本地对应的master分支
git fech // 从远程拉取
git checkout master //基于远程master创建一个本地的master分支

  1. 基于master创建一个新的功能分支
git checkout -b [功能分支名]
  1. 把原来功能分支的功能代码捡到新的功能分支中
git cherry-pick  // 将指定的提交用于当前分支
  1. 然后将新功能分支推到远程的功能分支就可以了

你可能感兴趣的:(在git上翻船的前端老同学)