Day 3 : Git 回推版本

reset 回推

使用Git的一大好处就是,当我的程序在改动的过程中发生了难以修复的错误,我们可以透过版本回推来还原。承接上一章节,我们先来建立多个commit。

https://ithelp.ithome.com.tw/upload/images/20210905/20119044keCYd0V2mC.png

输入git log --gragh如上图,我们新提交了3个commit,分别是新增修改1、新增修改2、把修改1改成修改3。HEAD->MASTER代表我们MASTER HEAD目前处於最新的"修改1变成修改3"的commit下。

就像是在一篇文章讲的,我们在修改、commit有分为三大区块:工作区、缓冲区、归档区。因此我们回推也可以选择回推不同的程度。下达git reset <不同回推程度> <哈希(前七码)>即可进行回推。

(哈希可由reflog查看)
git reset --soft <哈希>
# 还原commit (但还是有被add)
# --soft只回原归档区

git reset --mixed <哈希>
# 然後查看git log 会发现之前提交的消失了
# 但是程序码没有变动(尚未回滚)
# --mixed 是同时对归档区与缓冲区做回滚。
# 所以此时modify尚未add

git reset --hard <哈希>
# 还原commit全部,包含程序码
# --hard还原归档区、缓冲区、工作区

soft、mixed、hard分别代表三种不同的回推程度。具体可以看下图:

https://ithelp.ithome.com.tw/upload/images/20210905/2011904423Bw6SMHEk.png

实际来下达git reset --mixed f81792d (回到修改二),可以看到程序还原到尚未add的状态。

https://ithelp.ithome.com.tw/upload/images/20210905/20119044UigdBg2ywy.png

revert

git revert <哈希>同样的能够回复程序,但是逻辑不太一样。来实际git revert f81792d(修改二),这样就会把修改二的东西都回推掉,类似hard模式。

https://ithelp.ithome.com.tw/upload/images/20210905/20119044nJ4EwvOkGu.png

回朔的逻辑是用一个新的commit来去覆盖之前的修改

https://ithelp.ithome.com.tw/upload/images/20210905/20119044MjeiiOVhXr.png

revert可以用在修改前辈的程序上,想要回推前辈的东西,但是又不敢乱来。利用revert可以保留前辈之前的commit。不过基本上不常用啦,如果真的要保留,应该要用checkout一个新的分支,不过这个我们就保留到明天说吧。


<<:  [重构倒数第26天] - 你可能不需要Vuex (You might not need Vuex)

>>:  Day 5 ( 入门 ) 转动的眼球

WIN 10 看不到WIFI

Q : wi10 看不到wifi 在cmd 输入 netsh wlan set hostednetw...

【Day 23】Pointer 指标

接下来要讲的是指标(pointer),其实之前在讲阵列的时候,就已经有出现过 pointer 的应用...

Day29 X 面对高流量,前端可以做些什麽?

在现今的 Web 应用中,要建构一个稳定的大型系统,能够处理 High Concurrency 的...

Day 21 Spies 间谍来袭!

该文章同步发布於:我的部落格 今天我们要介绍 Mock 军团的最後一员,也就是 Spies 这个用...

[day-16] 认识Python的资料结构!(Part .3)

用List实现多层容器   何谓 多层容器 ?我们前面说过List可以存放 『任意型别』 ,其中也包...