记录一次git使用“失事”

前言

  • 这件事本来不想再提,因为它看起来很小,但却实实在在发生了,且有比较大的影响范围。

缘由

  • 公司使用的是 gitlab 作为内部仓库管理工具。项目按小组分,管理起来确实很方便。但是使用它进行分支合并时,还是需要谨慎和仔细的,尤其是在有冲突的情况下。
  • 情况大概如下:dev 分支是团队的开发分支。当把个人分支 samuel-feature1 合并到 dev 分支时,我直接在公司 gitlab 的web 界面上操作的:
  • 记录一次git使用“失事”_第1张图片
    image.png
  • 提交合并请求:
    记录一次git使用“失事”_第2张图片
    image.png
  • 此时提示出现冲突,我选择了 web 端的方式解决冲突(上图中的“解决冲突”按钮)
  • 记录一次git使用“失事”_第3张图片
    image.png
  • 上图所示,此时出现 diff 界面,但是只展示一个文件的 diff。我此时选择了 use theirs。再点击 commit to source branch。这就有问题了,这会导致将 dev 分支合并到 samuel-feature1 上,而我本意是要将 samuel-feature1 合并到 dev
  • 当我点击 use theirs 后,再点击 commit to source branch。回到本地,像往常一样随性的进行 git pull 。但我没注意到,此时有很大的变动,一切都是因为这该死的习惯。。。第二天,我要将 samuel-feature1 合并到 release 分支上,进行上线事宜。可是当我合并完,并在当天晚上20点上线完成后,发现已经将 dev 分支上的代码带到了 release 分支上。随后是各个团队找过来,询问怎么将开发分支代码带到了线上,总之经历了很长时间的解释和道歉随后想办法解决。解决办法大致就是撤销那次错误合并,整个过程还是比较麻烦的。

后续

  • 纵观整个事故的发生,造成这次合并失事的源头就是对 git 使用不当导致(对 web 端的解决冲突不了解),再归根结底就是使用 web 端的“解决冲突”功能导致。因此建议不要在 web 界面上进行“解决冲突”,所有的“冲突”在本地进行,针对有冲突的文件逐个手动合并。这样就不会有非预期的结果发生。

你可能感兴趣的:(记录一次git使用“失事”)