本文仅为记录git操作过程中遇到的状况,因此不会详细的讲解相关git的命令,如果遇到不懂的命令可以结合其他文章一并观看
一、场景概要
存在两个分支dev 和 master, dev分支既对master已经存在的文件进行了修改,也新增了一些文件,现在我们需要把 dev 的代码合并到master ,在dev 合并到 master 时发生了冲突,我在解决了一部分冲突后突然不想把 dev 合并到 master,这时候就算我们取消解决冲突, dev 的代码也已经到了master ,所以要做的操作就是恢复master到未合并前
二、我的繁琐解决之路
操作流程如下:
① 先进行了一次 revert 操作
状态: 此时把 master 原先存在但是被dev改动到的文件给转变为未合并前的状态,
但是还存在一些 master 原先不存在,但是从 dev 合并过来的新文件
② 将 从 dev 合并过来的新文件 commit 到了远程 master 分支
状态:此时本地和远程 master 分支都被污染了,我们需要把这些提交的新文件清除掉
③ 对刚提交的这次操作进行 revert 操作,其实就是把改动的全部反转,就相当于把这些文件删除了
状态:此时本地新增的代码就被 revert 掉了
④ 再进行一次 commit 操作,将远程的新增的代码删除掉了
繁琐的流程到此结束。。。
三、其他解决方式
当时时间比较紧张,加上对git 不是特别熟练,所以兜兜转转的,而且这种方式也很危险,如果操作不当可能会导致远程分支的代码受到影响,接下来讲一下我后面总结的其他几种方式
① 在第一次 revert 之后直接把本地新增的代码删除就行了,不需要提交到远程,这样保险一点,不会影响到远程master,但是缺点是需要手动去选择需要删除的文件
② 通过 reset 方式,直接回退到为合并前的状态
③ 直接把本地代码删除,重新clone一份代码,最保险的办法,但是比较费时间
以上方法只是我的一个想法,有些没经过论证,所以可能会存在一些问题,如果有遇到同样问题的朋友们可以按实际情况下参考下,欢迎各位在评论区指出本文的错误之处,非常感谢~
版权归原作者 MAllk33 所有, 如有侵权,请联系我们删除。