git重置(reset)、回滚(revert)、变基(rebase)总结

啊呜,经常被重置回滚和变基搞糊涂,需要使用的时候也会混乱。
现在使用的次数多了,慢慢明白了,记录一下。

前提:每次我们看到的commit都是经过-本地(工作区)->add(缓存区)->commit(提交)才会有哈希值出现。

1. git reset重置

就是传统意义上的重置。
git重置(reset)、回滚(revert)、变基(rebase)总结


疑问:重置之后,3,4里面的内容怎么处理?

  • 处理方式一mixed(默认处理方式)
    git reset (–mixed)
    重置到2后,
    工作区内容是2后正在写的…3的工作区内容,暂存区内容被清空/离3就差add,然后再commit。/
  • 处理方式二soft
    git reset –soft
    重置到2后,
    工作区内容是2后正在写的…3的工作区内容,暂存区内容是2后正在写的…3的暂存区的内容。/离3就差一个commit就一模一样了。/
  • 处理方式三hard
    git reset –hard
    重置到2后,
    工作区内容空,暂存区内容空/再也回不去啦/
    第8点

2. git rebase变基

git重置(reset)、回滚(revert)、变基(rebase)总结
续接的意思,图片很明朗。

2. git revert回滚

git重置(reset)、回滚(revert)、变基(rebase)总结
想撤回到3?
revert执行所有与3到4相反(增加就删除,删除就增加)的操作形成新的提交,这个提交所有内容和3一模一样。
再执行一次revert操作会怎么样?(撤回撤回的操作->就会回到4啦。当然,还是新增加一个提交,这个提交和4一模一样。)
git重置(reset)、回滚(revert)、变基(rebase)总结