【git】把test分支的合并到了开发分支,想要恢复干净的开发分支,怎么办? 【git reset 和 git revert的区别】

 

把test分支的合并到了开发分支,想要恢复干净的开发分支,怎么办?

 参考【git  reset  和  git  revert的区别

 

1.首先将现在已经被污染的 开发分支,新checkout一个不同命的相同分支出来,在这个clone分支上搞事情,保留原 开发分支上的开发代码 不要丢失

 

 

2.解下来,先根据提交记录,在目标开发分支上的条线上,找到把test分支 合并到 开发分支之前的一个commit 或者前几个节点,总之是选取一个干净的commit节点

 

 

 

 

3.右键点击 reset,将代码回退到这个指定的commit节点

(原理:git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本)

(表现:使用reset进行回退后,这个commit节点之后的所有 提交记录+代码  都会被清除。 就是说,执行完reset后,git log查看提交记录,这个节点后的提交记录都会被清除)

git  reset  是 回滚到 某个指定版本

 

 

 

 

 

4.选择 Mixed  点击  Reset

 

 

此时会提示 

 

 

 

5.然后对项目进行commit操作,下面会显出出来 未被加入Git缓冲区的 一堆红色文件,就是需要删除的文件,即被test分支污染的一堆文件

 

 

 

6.右键直接删除

 

 

 

7.然后 再右键项目,直接 Revert回滚 当前这个版本的代码

(原理: 有commit1 --> commit2--->  commit3,先要想保留commit3,清除commit2,即  使用命令 git revert -n commit2版本号)

(表现:执行结果就是  现在的git log  就是  commit1 --> commit2--->  commit3 --->commit4,  即所有提交记录都能看到,不会被清除,但是 commit2这次提交被 回滚了)

(git  revert 是回滚某个指定版本,不是 回滚到)

 

 

 

8.这个时候 commit项目,就是没有任何提交记录的

 

 

9.然后将master分支往该分支再pull一次,保证该分支能拥有较新的master代码

 

 

 

 

10.解决完冲突后,该分支就已经成了 较前时间节点的 干净开发分支了

 

 

 

11.最后一步,一定一定 将本地干净的分支 push到远程一个  新建分支上

 

 

 

12. 好了 干净分支恢复完成,最后,就需要 研发同学将 恢复的commitId节点后的所有开发代码,从 那个污染的分支上 compare  diff一下,把自己的那个时间点之后的所有 开发代码 复制到 这个干净分支上,完成干净代码的恢复 

=====================================

原文地址:https://www.cnblogs.com/sxdcgaq8080/p/14342443.html