git重置(reset)、回滚(revert)、变基(rebase)总结
啊呜,经常被重置回滚和变基搞糊涂,需要使用的时候也会混乱。
现在使用的次数多了,慢慢明白了,记录一下。
前提:每次我们看到的commit都是经过-本地(工作区)->add(缓存区)->commit(提交)才会有哈希值出现。
1. git reset重置
就是传统意义上的重置。
疑问:重置之后,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变基
续接的意思,图片很明朗。
2. git revert回滚
想撤回到3?
revert执行所有与3到4相反(增加就删除,删除就增加)的操作形成新的提交,这个提交所有内容和3一模一样。
再执行一次revert操作会怎么样?(撤回撤回的操作->就会回到4啦。当然,还是新增加一个提交,这个提交和4一模一样。)