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

前言:

IDEA 中 Git 文件颜色

白色:已经加入版本控制,已提交,无改动
蓝色:已经加入版本控制,已提交,有改动
绿色:已经加入版本控制,还未提交
红色:未加入版本控制
在这里插入图片描述

Git 本地数据管理-三大区

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

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

在这里插入图片描述

Undo Commit:commit了,但未push时

● 比较常用,比如说忘了切分支,不小心在master分支上做了修改,并commit了,但还没有push,想要撤回提交,但不想丢弃掉刚刚修改的内容,就可以使用 Undo Commit。
● 只是 commit 了,并没有 push 时,使用 Undo Commit,会把提交的代码恢复成未提交,并且那条提交记录也不复存在
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Revert Commit:commit了,但未push时

● 只是 commit 了,并没有 push 时,使用 revert commit,会丢失掉这条提交的修改内容,并且会多生产一条 Revert 的提交记录
在这里插入图片描述

Drop Commit:commit了,但未push时

● 慎用
● 只是 commit 了,并没有 push 时,使用 drop commit,不仅那条提交记录的修改数据被丢弃掉了,连着提交记录也被删除了
在这里插入图片描述

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

Revert Commit:commit+push

比较常用,比如业务提了一个需求,我开发完了,并且 push 到了 dev,后面又说这个需求不用了,这个时候就需要用到 revert commit 把这次提交的修改回滚掉。
单个分支示例:
在这里插入图片描述在这里插入图片描述
多个分支示例:
● dev 开发分支
● 从 master/dev 分支切出一个 bugfix-01 分支
● 其他分支的修改往 dev 合
在这里插入图片描述
使用 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 还需要在这次修改的基础上继续修改
在这里插入图片描述
在这里插入图片描述
以上都是单个提交点的情况,多个提交点时:
在这里插入图片描述

Reset 使用

reset current branch to here:重置当前分支到此提交点。和 Revert 完全不同,revert 是只回滚当前提交点的内容,而 reset 是当前提交点后的修改内容全部回滚。reset 不会生成新的提交点,revert 会生成新的提交点。reset 得强制 push,revert 正常 push 即可。
在这里插入图片描述

在这里插入图片描述

reset current branch to here:Soft

● Soft:此提交点往后的修改会回到待提交区,本地其他的修改也不会被丢弃。强制 push 后,该提交点往后的提交记录都会被删除
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

reset current branch to here:Mixed

● Mixed:此提交点往后的修改会回到待提交区,本地其他的修改会被放到工作区,而不是暂存区(待提交区)。强制 push 后,该提交点往后的提交记录都会被删除
在这里插入图片描述

reset current branch to here:Hard

● Hard:慎用。此提交点往后的修改会不回到待提交区,而是直接被丢弃。本地其他的修改也会被丢弃。强制 push 后,该提交点往后的提交记录都会被删除
在这里插入图片描述

reset current branch to here:Keep

● Keep:此提交点往后的修改不会回到待提交区,而是直接被丢弃。本地其他的修改会被放到工作区,而不是暂存区(待提交区)。强制 push 后,该提交点往后的提交记录都会被删除
在这里插入图片描述

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

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

在这里插入图片描述
在这里插入图片描述

Cherry-Pick

● 获取某一个分支的单笔提交,并作为一个新的提交引入到你当前分支上
在这里插入图片描述
在这里插入图片描述

  • 26
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Git ,revertreset 是两个用于撤销提交的命令,但它们有一些不同的用法和影响。 1. revert: `revert` 命令用于创建一个新的提交,以撤销之前的提交。它不会修改历史记录,而是在撤销提交产生一个新的提交。这是一个安全的方法,因为它不会更改过去的提交,而只是在历史记录添加新的提交来撤销之前的更改。 例如,如果你想撤销最新的提交,可以使用以下命令: ``` git revert HEAD ``` 这将创建一个新的提交,该提交将撤销之前最新的提交所做的更改。 2. reset: `reset` 命令用于移动分支指针到一个特定的提交,并且可以选择是否修改工作目录和索引。这是一个更强大但也更危险的操作,因为它可以重写历史记录。 有三种常见的 reset 模式: - Soft reset: 移动分支指针,但不修改工作目录和索引。通过此方式可以撤销最新的提交,并且保留修改的文件。 - Mixed reset: 移动分支指针,并且重置索引以匹配指定提交,但不修改工作目录。通过此方式可以撤销最新的提交,并且取消暂存的更改。 - Hard reset: 移动分支指针,并且重置索引和工作目录以匹配指定提交。通过此方式可以完全丢弃最新的提交及其更改。 例如,如果你想撤销最新的提交并且保留修改的文件,可以使用以下命令: ``` git reset --soft HEAD~1 ``` 总结来说,`revert` 是安全的,因为它不会更改过去的提交,而是创建一个新的提交来撤销更改。而 `reset` 可以移动分支指针并且修改历史记录,但需要小心使用,因为它可能会导致数据丢失。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值