push到远程的commit需要回退操作
例如:当前commit节点为D, 之前有ABC三个commit操作
git reset --hard C
–hard:表示彻底清空当前工作目录和暂存区的内容,当发现提交的D节点存在错误,需要回退到C节点时执行,执行后回退节点之后的所有更改都不会出现到当前工作目录里中和add后的暂存区域;执行reset命令后远程会提示C节点以后所有的commit,此时直接push会报错,提示需要先pull远程分支的commit;如果想覆盖掉D的commit推送,执行git push --force
git reset --soft A
–soft:表示会在暂存区记录D和A之间的差异,即A到D之间的所有的文件修改都会出现在暂存区域(即add之后的区域),然后直接执行git commit操作来合并A到D之间所有的commit,通常用以完成一个功能后,合并零散的commit记录git reset --mixed B
–mixed:是reset的默认参数,回退程度比soft更彻底,表示将B到D之间的所有修改放到工作区间(指当前工作目录);git reset HEAD表示unstaged所有add到暂存区域的文件