Git回滚与强推 & 结合IDEA

本文最后更新于:2022年10月31日 下午

概览:Git的回滚与强推命令,结合IDEA类可视化操作使用

git基础知识:Git基本操作 - Colourso

版本回退

版本回退基本操作:

  1. git log 查看提交记录,其中会有一个信息HEAD -> master,表示当前的版本

  2. 回退到上一个版本:git reset --hard HEAD^HEAD指当前版本,HEAD^指前一个版本

  3. 回退到上n个版本:git reset --hard 5520407e2933d035,这里写commitId的前几位就可以。

  4. 回到未来的版本:

    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): init

    b. 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 协议 ,转载请注明出处!