idea中git相关知识(revert,reset,stash/unstash changes使用)

这篇具有很好参考价值的文章主要介绍了idea中git相关知识(revert,reset,stash/unstash changes使用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

IDEA 中 Git 文件颜色

白色:已经加入版本控制,已提交,无改动
蓝色:已经加入版本控制,已提交,有改动
绿色:已经加入版本控制,还未提交
红色:未加入版本控制
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java

Git 本地数据管理-三大区

工作区,暂存区,版本库
● 工作区:项目目录,开发存放代码的地方。
● 暂存区:数据暂时存放的地方。待提交区,存放有修改的文件的地方。git add 之后,commit 之前
● 版本库(本地仓库):存放已经提交的数据。commit 之后,push 时,就是把这个区的数据 push 到远程仓库
开发者在工作区对代码进行修改,修改的文件 git add 添加到暂存区,然后把暂存区的代码 commit 提交到版本库,最后把版本库中的数据 push 到远程仓库。
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,javaps:此图copy某位大佬的,画得真好

提交错了,还未 push 时回退此次提交

idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java

Undo Commit:commit了,但未push时

● 比较常用,比如说忘了切分支,不小心在master分支上做了修改,并commit了,但还没有push,想要撤回提交,但不想丢弃掉刚刚修改的内容,就可以使用 Undo Commit。
● 只是 commit 了,并没有 push 时,使用 Undo Commit,会把提交的代码恢复成未提交,并且那条提交记录也不复存在
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java

Revert Commit:commit了,但未push时

● 只是 commit 了,并没有 push 时,使用 revert commit,会丢失掉这条提交的修改内容,并且会多生产一条 Revert 的提交记录
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java

Drop Commit:commit了,但未push时

● 慎用
● 只是 commit 了,并没有 push 时,使用 drop commit,不仅那条提交记录的修改数据被丢弃掉了,连着提交记录也被删除了
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java

提交错了,并 push 到了远程时回退此次提交

Revert Commit:commit+push

比较常用,比如业务提了一个需求,我开发完了,并且 push 到了 dev,后面又说这个需求不用了,这个时候就需要用到 revert commit 把这次提交的修改回滚掉。
单个分支示例:
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,javaidea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java
多个分支示例:
● dev 开发分支
● 从 master/dev 分支切出一个 bugfix-01 分支
● 其他分支的修改往 dev 合
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java
使用 revert commit
● 在 bugfix-01 分支上进行 revert commit:commit 后直接 push。 该分支此次提交的内容会被丢弃,并生成一条 Revert 的提交记录。然后把该分支往 dev 上合并,这样 dev 上的这个修改的内容也会被丢弃。

● 在 dev 分支上进行 revert commit:commit 后直接 push。dev 分支此次提交的内容会被丢弃,但 bugfix-01 分支上还保留着这次的修改。
○ 适用场景:bugfix-01 分支的内容还未测试通过,不小心合到了生产环境(master),这个时候就只能在 master 分支上对此次提交内容进行 revert commit,而不在 bugfix-01 分支上进行,应该 bugfix-01 还需要在这次修改的基础上继续修改
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java
以上都是单个提交点的情况,多个提交点时:
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java

Reset 使用

reset current branch to here:重置当前分支到此提交点。和 Revert 完全不同,revert 是只回滚当前提交点的内容,而 reset 是当前提交点后的修改内容全部回滚。reset 不会生成新的提交点,revert 会生成新的提交点。reset 得强制 push,revert 正常 push 即可。
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java

idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java

reset current branch to here:Soft

● Soft:此提交点往后的修改会回到待提交区,本地其他的修改也不会被丢弃。强制 push 后,该提交点往后的提交记录都会被删除
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,javaidea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java

reset current branch to here:Mixed

● Mixed:此提交点往后的修改会回到待提交区,本地其他的修改会被放到工作区,而不是暂存区(待提交区)。强制 push 后,该提交点往后的提交记录都会被删除
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java

reset current branch to here:Hard

● Hard:慎用。此提交点往后的修改会不回到待提交区,而是直接被丢弃。本地其他的修改也会被丢弃。强制 push 后,该提交点往后的提交记录都会被删除
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java

reset current branch to here:Keep

● Keep:此提交点往后的修改不会回到待提交区,而是直接被丢弃。本地其他的修改会被放到工作区,而不是暂存区(待提交区)。强制 push 后,该提交点往后的提交记录都会被删除
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java

IDEA git 代码临时储藏区(Stash Changes)

Stash Changes:暂存变动
Unstash Changes:恢复暂存变动
如果本地文件有改动,且和服务器最新版本有冲突,pull 更新时会提示错误,无法更新;或者切换到其他分支时,会提示冲突;此时要么 commit 自己的改动再 pull,要么使用 Stash Changes 将改动先存储下来再 pull。
stash 的好处就是可以先将改动暂存到本地仓库中,不用担心 push 到服务器,因为 Stash Changes 的内容不参与 commit 和 push。而且,stash 中的改动可以随时取出来(Unstash Changes)再用

idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java

Cherry-Pick

● 获取某一个分支的单笔提交,并作为一个新的提交引入到你当前分支上
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java
idea中git相关知识(revert,reset,stash/unstash changes使用),intellij-idea,git,java文章来源地址https://www.toymoban.com/news/detail-754274.html

到了这里,关于idea中git相关知识(revert,reset,stash/unstash changes使用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • idea 工作中常用的 git 技巧: ChangeList,Stash Changes

    在使用idea提交代码的时候,经常会遇到配置文件和工具类或者测试类不想commit的情况。 但每次commit都会因为各种文件混在一起,需要仔细看。 这个时候,需要用到ChangeList。 在commit的弹出的文件界面里,选中你不想commit的文件,右键,move to another changelist,给这个changelist取

    2024年02月03日
    浏览(40)
  • Git 基础知识--stash 存储、reset 回退及恢复

    简介 Git 提供了 stash 存储的功能,即当你在工作到一半突然需要切换到另一个分支上,但又不想提交时,可将当前做出的修改通过 git stash 命令存储起来,之后再从其中重新读取之前的状态。 注意事项 若修改的文件没有执行 git add 即未被跟踪,则该文件不会被 git stash 存储,

    2023年04月10日
    浏览(46)
  • Your local changes would be overwritten by merge. Commit, stash or revert them to proceed.

    前言 这个错误的意思是在执行Git pull命令后,被拉取(pull)的远程仓库版本和本地仓库当前的版本产生了冲突,Git 不知道该如何处理这个冲突,因此在控制台输出此错误并停止执行。 解决方法 要解决这个问题,你需要处理本地仓库中的变更记录,使其与远程仓库版本保持一

    2024年02月16日
    浏览(57)
  • Git reset、revert用法

    reset是删除之前的提交记录,所有的提交点都会被清除,我们看下执行前后的git log区别 执行完成后发现个人分支第三个提交好像从来没有出现过一样,建议不要使用reset,毕竟会把别人的提交点彻底删除 revert 将指定提交的代码给清除掉,提交记录还存在,相当于添加一个新

    2024年02月10日
    浏览(39)
  • git的 reset 和 revert 区别

    线上master分支不可信,需要回到某个分支; 但是很多人习惯把一个需求,分多次commit,于是会出现下面这种情况 基于这种情况,git revert 就不如 git reset好用,可以借助Idea,直接通过 git reset --hard 指向需要回退到的commit,然后随便找个地方,敲上一个空格,产生一次新的commi

    2024年03月21日
    浏览(48)
  • git reset 命令详解 git revert命令详解。

    git reset 命令格式为: git reset [ --soft | --mixed | --hard ] [ commitid ] 在git的这些命令中git reset是最长常用的,也是最危险的最容易被误用的。它的主要参数是:soft,mixed,hard它们告诉git,当执行reset是,要对index和working copy做什么。 soft: –soft参数只将其它的commit重置到你选定的HEAD,

    2024年02月15日
    浏览(55)
  • git 的rebase、reset、revert区别?

    rebase 、 reset 、和 revert 是 Git 中用于修改提交历史的三个不同的命令,它们的作用和效果有所不同。 1. rebase : git rebase 用于将一个分支的提交移到另一个分支上,并重新应用这些提交。主要有两种用途: 整理提交历史 :将多个小的提交合并成一个更为清晰的提交历史,避免

    2024年01月21日
    浏览(62)
  • git:代码回退restore 、reset、revert

    友好提示看这篇需要对git有一定了解!!! git中有很几个关于代码回退的命令:restore 、reset、revert ,初学git的同学们可能搞不清楚什么时候该用哪个,根据我的一点点经验,简单介绍一下它们,希望能帮到大家 (我的水平有限,内容仅供参考 . ,哪里有问题,欢迎指出) 一: restore(恢复) 针对

    2024年02月05日
    浏览(41)
  • git代码回滚是使用reset还是revert

    时光不能回退,Git却允许我们改变历史。 想要让Git回退历史,有以下步骤: 快捷命令: 【注:HEAD是指向当前版本的指针,HEAD^表示上个版本,HEAD^^表示上上个版本】 如果修改到的文件比较少,我们可以不通过命令回滚的方式,手动删除之前的修改,再进行提交。 reset和reve

    2024年02月07日
    浏览(90)
  • 【git 使用】超级好用的 git reset 和 git revert 功能对比和使用方法

    首先你要知道 git 区分暂存区和工作区,如果你用过 sourcetree 你就会知道 git reset 命令用于将当前分支的 HEAD 指针移动到指定的提交,并且可以选择性地修改工作区和暂存区的状态。 git reset 命令有几种常用的用法,主要包括: git reset --soft commit-id:  被 reset 的提交会放到暂存

    2024年02月20日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包