IDEA小技巧-Git的回滚&&强推&&代码找回(超详细)

开源 0

PS:我们这里对 Test1 文件的 add ,commit 以及 push 展开讨论

在本地 add 到暂存区但未 commit 的代码回滚方式

对于新增以及修改的文件

直接鼠标右键文件进行回滚
在这里插入图片描述

已经 commit 但未 push 的代码回滚方式

undo commit

回退最后一次提交,且只能回退最后一次提交,commit的内容都会被保留,被修改或新增的代码都会被保留

使用 undo commit 前

在这里插入图片描述

使用 undo commit 后

在这里插入图片描述

在这里插入图片描述

注意:这里是选择变更列表,我们一般使用默认的就行

在这里插入图片描述

可以看见 Test1 变绿,回滚了提交,即回到了 add 状态

drop commit

直接删除提交,并回退代码,被修改或新增的代码都会被复原

使用 drop commit 前

在这里插入图片描述

使用 drop commit 后

在这里插入图片描述

在这里插入图片描述

revert commit

使用后新增一次 revert 记录,并回退代码

使用 revert commit 前

在这里插入图片描述

使用 revert commit 后

在这里插入图片描述

在这里插入图片描述

注意

回滚一般是回滚最近一次提交,如果你想要回滚中间的提交,可能需要承受冲突合并等一系列问题

reset

对于前面的 revert commit 以及 drop commit 都是单点的回滚,如果想要一次性的从最近的一次提交一步一步地到指定的提交,这时候就需要用到 reset 了

soft

在选定提交之后所做的所有更改都在暂存区中

commit的内容都会保留,其新增文件 + 文件变更都在暂存区

mixed

在选定提交之后所做的更改将被保留,但不会暂存以进行提交。

commit的内容都会保留,新增文件在工作区,文件变更在暂存区

hard

在选定提交之后所做的所有更改都将被抛弃(暂存和已提交)

commit的内容+暂存区的内容全部被丢弃

keep

在选定提交之后的已commit内容将被丢弃,但未commit的部分将保留

commit部分内容被丢弃,未commit部分保留

示例

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

选择 hard ,结果是

在选定提交之后所做的所有更改都将被抛弃(暂存和已提交)

commit 的内容+暂存区的内容全部被丢弃

已经 commit 并且 push 的代码回滚方式

发生问题场景

  1. 想要重新生成 commit message

  2. 代码没写好给 push 到远程仓库了

以下是我们的预期示例图
在这里插入图片描述

由于 git 对代码的保护机制,导致我们无法直接将原F删掉,替换成我们的新的F’,所以我们需要采用特殊的手段达到目的,即 强推

首先我们将本地的代码推送到远程仓库

在这里插入图片描述

假如这个时候我们想要修改 commit message,那这个时候就需要以下操作

然后 reset 我们远程的分支

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这时候如果我们再 commit test ,然后 push 的话会报错
在这里插入图片描述

这是处于 git 的保护机制,想要我们处理冲突,我们显然是不想处理的,而是直接替换掉远程仓库的 test 提交

那么这个时候就需要使用 强推 这个操作了
在这里插入图片描述

但是我们这个时候 force push 是灰色的,怎么回事呢?

在这里插入图片描述

嘿嘿,不急

打开设置,删除受保护分支。

在这里插入图片描述

这时候就可以点击 强推 了

在这里插入图片描述

这时候远程分支就和本地分支一致了

在这里插入图片描述

这时你就可以重新上传分支到远程仓库了

另外注意

强推有风险,如果你的项目是多人开发的话,很有可能会覆盖别人写的代码,造成不可挽回的后果

代码找回

如果我们不小心误回滚了我们的代码如何找回呢

这时我们可以随地找出空白处右键

在这里插入图片描述

在这里插入图片描述

这个时候我们即可通过 revert 进行代码找回

本篇文章参考于:https://www.bilibili.com/video/BV1Wa411a7Ek/?spm_id_from=333.880.my_history.page.click

也许您对下面的内容还感兴趣: