Git回滚与强推 & 结合IDEA
本文最后更新于:2022年10月31日 下午
概览:Git的回滚与强推命令,结合IDEA类可视化操作使用
git基础知识:Git基本操作 - Colourso
版本回退
版本回退基本操作:
git log
查看提交记录,其中会有一个信息HEAD -> master
,表示当前的版本回退到上一个版本:
git reset --hard HEAD^
,HEAD
指当前版本,HEAD^
指前一个版本回退到上n个版本:
git reset --hard 5520407e2933d035
,这里写commitId的前几位就可以。回到未来的版本:
a. 首先要使用
git reflog
找到对应的commitId,主要是使用commit信息来区分的,所以平时写好也很重要1
2
3
4
5
6
7$ git reflog
b56a5e1 (HEAD -> master) HEAD@{0}: reset: moving to b56a5e1808
7e7386f HEAD@{1}: commit: helloworld
15a71c6 HEAD@{2}: reset: moving to 15a71c6c4a4003ca1
b56a5e1 (HEAD -> master) HEAD@{3}: reset: moving to HEAD^
15a71c6 HEAD@{4}: commit: add main
b56a5e1 (HEAD -> master) HEAD@{5}: commit (initial): initb.
git reset --hard 7e7386f
,指定对应的commit回到未来的版本即可。
回滚 —— 本地未commit
如果是新增的文件 —— 直接delete删除即可
如果是变更的文件 —— 则需要roll back
可以选定指定文件进行rollback
也可以在顶部菜单栏选择 uncommit roll back
回滚 —— 本地commit但未push
drop commit
会删除提交记录,删除的这一条也没有记录。
revert commit
回滚提交记录,也会留下一条revert的记录
这两个命令注意事项:如果对中间的提交记录进行操作,可能会造成不可预知的丢失,最好不要这么操作。
reset
可以来回滚到指定节点的位置,这也是最常用的命令。
需要跟一些选项:
- soft:选定提交点之后所有的更改都会在暂存区,即commit的内容和之前暂存区的内容
- mixed:选定提交点之后所有的更改保留,但新增的文件会在工作区、文件的变更在暂存区
- hard:在选定提交之后所作的所有更改都将被丢弃(暂存和已经提交),即commit的内容和暂存区的内容都会被丢弃。
- keep:在选定提交之后的已经commit的内容会被丢丢弃,未commit的内容保留。
个人一般用hard模式多一些:git reset --hard hgjsdj
回滚 commit并且push远程
一个简单的办法:commit了错误的内容,在本地把那部分内容删除,然后再Push即可。
reset + force push:
本地reset到一个提交记录那里,如果此时commit —— 目的是为了回滚掉错误的提交,那么就会有问题,git会保护基,不能让人这么随随便便的push。
此时commit并且push的话,会让人merge远程代码或者rebase,那这样的话远程代码又和本地合并了,没有达到回滚的效果。
此时就需要force push代码
提醒:强推有风险,操作需谨慎。
强推前需要注意是否别人提交了代码,否则的话强推会导致别人代码的丢失。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!