git回退历史,有以下步骤:
1.已push后回退:
(1) 使用git log命令,查看分支提交历史,确认需要回退版本的
(2) 使用git reset --hard 命令或者git revert ,进行版本回退(此时本地已回退)
(3) 在git commit后,再次使用git push origin <分支名> --force命令,
推送至远程分支(此时线上版本已回退)
快捷命令:git reset --hard HEAD^
注:
HEAD是指向当前版本的指针,HEAD^ 表示上个版本,HEAD^^表示上上个版本
revert和reset的区别:
(1) 在实际生产环境中,代码是基于master分支发布到线上的,会有多人进行提交。可能会碰到自己或团队其他成员开发的某个功能在上线之后有Bug,需要及时做代码回滚的操作。
在确认要回滚的版本之后,如果别人没有最新提交,那么就可以直接用reset命令进行版本回退,否则,就可以考虑使用revert命令进行还原修改,不能影响到别人的提交。
(2) reset命令会把要回退版本之后提交的修改都删除。要从第三次修改回退到第一次修改,那么会删除第二、三次的修改。【注:这里并不是真正的物理删除】
如果发现第二次修改有错误,想要恢复第二次修改,却要保留第三次修改,使用revert命令,其产生了新的commit_id。
2.提交到暂存区后(执行git add后)回退:
git reset HEAD
3.工作区(执行git add前)回退:来清空工作区的修改
git checkout -- <file_name>
1.确定准备回退的分支,例如dev分支;然后切换到dev分支
2.使用日志命令
git log
查看提交记录(因为当前已经切换到dev了,因此查看的是dev的提交记录),找到需要回退到哪次 commit 的位置,记录下 commit 号,例如:
commit 96f6ec9bf41fe0e425f8495d46a52b8f990facd3
注意,回退到这次 commit 的位置,是包括这次 commit 提交的代码的 ;如果不想要这次commit提交的代码,那就回退到再上一次 commit的位置
3.执行回退命令,会把本地代码回退到这次 commit 时的状态(包括这次commit):
git reset --hard 96f6ec9bf41fe0e425f8495d46a52b8f990facd3
4.执行命令,把本地代码强制推送到远程
git push origin dev --force
说明:
●如果不使用force命令,就无法推送到远程,会冲突。
(当然会冲突,回退代码后本地当前版本与远程版本不一致,例如本地是v0.1,远程是v0.2;如果想让远程也回退成v0.1,只能使用force命令)
●注意,push后,远程的代码提交历史记录就会与本地相同(意思是v0.2版的代码提交记录就没有了;如果v0.2版的提交记录中、还有需要的代码,那就先单独整理出来,然后再执行这个push回退命令)
●origin的意思是,远程的url(.git的网址),这个是之前就配置好的
●dev的意思是,指远程的dev分支
●整个命令的意思是,把本地当前分支的代码强制推送到远程dev分支(忽略冲突,直接覆盖)
微前端,多人开发,我开发的模块B 依赖模块A。但是A模块的代码,有很多缺陷,更新之后,项目变得卡顿,影响到了B模块开发。解决办法就是把A模块的本地代码进行回退,reset。像还原的时候直接拉取就好