有时候,我们用Git的时候有可能commit提交代码后,发现这一次commit的内容是有错误的,那么有两种处理方法:
1、修改错误内容,再次commit一次 2、使用git reset 命令撤销这一次错误的commit
第一种方法比较直接,但会多次一次commit记录。
而我个人更倾向第二种方法,错误的commit没必要保留下来。
基础理论知识请查看--Git的基本流程和Git reset的三种模式
实战
好比你的需求(把某字段的注释从“排序“改为了”弹窗顺序“)完成了,你commit后已经push到远程了。
提交历史
我们先来讨论几种场景:
(1) 你在合并到dev分支进行测试的时候发现有bug。
(2) 产品说这个需求不做了。
(3) 当前分支还有之前的需求push了,但没有合到远程master分支去部署,然而你这次开发的需求又push到同一个分支了,产品要求先把上个需求先上了。
现在想要回退到修改字段注释前,即字段的注释为“顺序“时,我们可以先Reset到上一个提交,即图中的【修改】提交历史处。
会出现弹窗询问你想要怎么Reset,假如我们的场景是(2)产品说这次的需求不需要了,也就是放弃目前本地的所有改变,那么我们可以选择hard的方式,直接回到你写这次需求前的代码。
选择Hard等价于命令行 git reset --hard HEAD~1 ,后面1,表示我已经push1次了,这次不想要了, 如果2次,就写2。
代码会恢复到这次修改前
同时发现Git的Log里面你的提交历史也重置回去了
如果你已经push过,那么这时我们需要强制提交到当前分支的远程分支,也就是直接覆盖掉远程这次需求提交的代码。
此操作等价于命令 git push -f origin 分支名字
如果你不强制提交到远程的话,那么当你update的时候会和你之前提交的“弹窗顺序“产生冲突。
如果你的场景是(3)想要先stash,把之前的写的需求先部署,后面再unstash回来修改这次的需求,没问题后再上线,那么你可以选择Soft Reset。
等价于命令行 git reset --soft HEAD~1
那么就会回到你commit前的状态(保留你的暂存区和工作目录)
这时你可以直接修改代码后,再commit再强制提交,或者直接stash,再强制提交,回到上一次没有修改代码提交前,也就是回到注释是“排序“的时候
标签:reset,需求,git,提交,push,commit From: https://www.cnblogs.com/liaowenhui/p/16779706.html