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

这篇具有很好参考价值的文章主要介绍了IDEA小技巧-Git的回滚&&强推&&代码找回(超详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

对于新增以及修改的文件

直接鼠标右键文件进行回滚
IDEA小技巧-Git的回滚&&强推&&代码找回(超详细),git,intellij-idea,git,java

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

undo commit

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

使用 undo commit 前

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

使用 undo commit 后

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

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

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

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

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

drop commit

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

使用 drop commit 前

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

使用 drop commit 后

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

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

revert commit

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

使用 revert commit 前

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

使用 revert commit 后

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

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

注意

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

reset

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

soft

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

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

mixed

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

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

hard

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

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

keep

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

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

示例

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

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

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

选择 hard ,结果是

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

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

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

发生问题场景

  1. 想要重新生成 commit message

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

以下是我们的预期示例图
IDEA小技巧-Git的回滚&&强推&&代码找回(超详细),git,intellij-idea,git,java

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

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

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

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

然后 reset 我们远程的分支

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

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

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

这时候如果我们再 commit test ,然后 push 的话会报错
IDEA小技巧-Git的回滚&&强推&&代码找回(超详细),git,intellij-idea,git,java

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

那么这个时候就需要使用 强推 这个操作了
IDEA小技巧-Git的回滚&&强推&&代码找回(超详细),git,intellij-idea,git,java

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

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

嘿嘿,不急

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

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

这时候就可以点击 强推 了

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

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

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

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

另外注意

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

代码找回

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

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

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

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

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

本篇文章参考于:https://www.bilibili.com/video/BV1Wa411a7Ek/?spm_id_from=333.880.my_history.page.click文章来源地址https://www.toymoban.com/news/detail-826446.html

到了这里,关于IDEA小技巧-Git的回滚&&强推&&代码找回(超详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • idea-git操作 :Rollback(回退),Reset HEAD(重置/回滚) --git项目代码丢失

    在Reset HEAD 操作中代码丢失的解决方法: 看Reset Head ! rollback: 回退 - 选择回退add的内容 (1.已commit的:只是删除修改部分;2.已add的:只是回退到未add的状态3.未add的 不变) Reset Head: Reset Type : mixed(混合) ,soft(软) ,hard(硬) TO Commit : HEAD ,HEAD^ (回退到上一commit版本) ,number(回退指定commit版本

    2024年02月10日
    浏览(94)
  • @Transactional-单元测试中的回滚

    今天在JUnit单元测试中测试接口时,突然发现idea写入数据库成功,但是数据库中没有数据 去掉@Rollback注解后,idea中事务正常执行,mysql数据库中依然是没有数据的,查看日志发现 明显事务虽然执行成功了但是回滚了,仔细一看问题出在@Transactional,spring支持声明式事务,通过

    2024年02月15日
    浏览(42)
  • idea修改git提交代码的用户名(小技巧)

    提交代码,这里不能显示自己的名字的解决办法 c盘用户目录下找到这个.gitconfig文件    打开.gitconfig文件,修改里面的username 重启idea,然后就ok了。 

    2024年02月12日
    浏览(53)
  • idea中git版本回滚以及git指令回滚

    场景 在项目开发过程中,git提交的最新版本的代码出现问题,需要回滚到之前的某一个版本,需要使用到git的reset操作进行回滚,与之区分的revert操作。 reset是直接回滚到某一个版本,将这个版本之后的所有版本丢弃。 revert是指定取消某一个版本的提交 Idea中git版本回滚 1.选

    2024年02月16日
    浏览(61)
  • git上传代码到gitee,强推覆盖解决办法

    git上传代码到gitee 1.在所要上传的文件空白处,右击Git Bush Here 2.输入命令 3.刷新gitee就可以看见自己上传的文件 这样容易导致文件被覆盖 正确做法

    2024年02月11日
    浏览(42)
  • 详解IDEA git 版本回滚

    作者简介 目录 1.git分区 2.未commit,进行回滚 3.commit未push,进行回滚 3.1.undo commit 3.2.reset 4.已commitpush,进行回滚 git的版本回滚其实就是回滚不同的分区,所以在聊git回滚之前我们有必要简单了解一下git的分区。git在本地有三大分区:工作区、暂存区、版本库。 工作区:正在编

    2024年02月08日
    浏览(51)
  • idea git回滚之前提交记录

    目录 操作方式 类型作用 前言-与正文无关         生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中,我们往往容易陷入工作的漩涡,忘记了停下脚步,感受周围的世界。让我们一起提醒自己,要适时放慢脚步,欣

    2024年01月17日
    浏览(68)
  • 【git】拉取的项目放入idea中,未作任何修改,但是一开始就有文件没有纳入git管理,进行回滚,但是报错filename too long,git拉取代码时就报错filename too long

    我在接手一个新项目时,要做这个项目的需求变更,然后我将这个项目从公司的gitlab上拉下来,但是发现刚拉下来的项目就有很多文件没有纳入git管理和一些文件变更,但是这个是刚拉下来的文件,我没有做任何的操作 尝试切换分支也失败,就是因为识别到本地有内容更改没

    2024年02月05日
    浏览(91)
  • idea git回滚某次commit【超简单】

    1. idea左下角,如图【Version Control】tag页;能看到自己的commit列表;   2. 在要回滚的commit上右键,选【Revert】;可能会弹出编辑页面/冲突解决页面,确定后【Commit】即可; 3. 本地即回滚成功,重新将这个revert commit push到远程即可;

    2024年02月16日
    浏览(40)
  • git -push -f 强推后,别人提交的代码被覆盖的问题解决

    今天在提交代码时,因为merge了错误的代码导致我本地代码出现了错误 所以我直接 git reset --hard 到了 “修改引擎”的这一个提交,然后用了git -push -f;但是原本同事的下面这几个提交都被我强制推送的提交覆盖掉了。在gitlab的仓库中的提交信息中,还找不到之前同事提交的版

    2024年02月11日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包