git reset和 git revert比較

git reset和git revert區(qū)別與作用

一、先介紹幾個名詞:

1.working copy工作區(qū)

working copy(工作區(qū))你正在工作的那個文件集

2.Index

index也被稱為staging area(暫存區(qū)),指一整套即將被下一個提交的文件集合妆艘。

3. HEAD

這是當(dāng)前分支版本頂端的別名换团,也就是版本庫中最近的一個提交。

HEAD^=HEAD~1代表版本庫中的上一次提交,即最近一次提交的父提交

HEAD^^ =HEAD~2代表HEAD^的父提交

……

下圖是工作區(qū)磺芭、暫存區(qū)與HEAD簡單的原理圖:

屏幕捕獲_2018_05_26_19_50_15_262.png

當(dāng)執(zhí)行一個git add,提交的內(nèi)容就暫存在index中,現(xiàn)在你的working copy和index內(nèi)容是相同的是尖,但是他們和HEAD區(qū)不同意系。

當(dāng)執(zhí)行一個git commit,就創(chuàng)建一個新的commit將內(nèi)容提交到master,隨后HEAD就指向這個新的commit饺汹,而index,working copy和HEAD就匹配相同了蛔添。

二、Git Reset

此命令就是重置HEAD(當(dāng)前分支的版本頂端)到另外一個commit處兜辞。

1.git reset HEAD

任何事情都不會發(fā)生迎瞧,HEAD就是當(dāng)前提交所在的位置。

2.git reset HEAD~1

HEAD從頂端移動到前一個提交處

3.git reset HEAD~2

HEAD從頂端往下移動兩次到倒數(shù)第三個提交處

4.git reset --soft xxx與git reset --hard xxx的區(qū)別

--soft參數(shù)讓Git重置HEAD到另外一個提交處逸吵,但也到此為止凶硅。此時暫存區(qū),工作區(qū)都不會做任何變化胁塞。

--hard參數(shù)它將重置HEAD返回到另外一個提交處咏尝,重置index以便反映HEAD的變化,并且重置working copy也使得其完全匹配起來啸罢。

如下兩圖编检,在--soft執(zhí)行后,HEAD指向的commit變成上一次commit扰才,但工作區(qū)ls前后的文件沒有變化允懂。而執(zhí)行g(shù)it reset --hard HEAD后,HEAD指向當(dāng)前commit f4cef衩匣,同時working copy工作區(qū)的d.md文件沒了蕾总。[圖片上傳失敗...(image-d1fb66-1527335571902)]

屏幕捕獲_2018_05_26_18_58_46_837.png
屏幕捕獲_2018_05_26_19_03_06_226.png

三、Git reset和Git revert區(qū)別與作用

reset是回朔到指定的commit版本(指定commit版本之后的操作都消失了)琅捏。revert是刪除指定的commit生百,此次操作之前和之后的commit和history都會保留,并且把這次撤銷作為一次最新的提交柄延。

Git reset --hard與git revert比較如下:

1.有四次提交分別提交了4個文件 a.md , b.md, c.md, d.md.當(dāng)前提交b3e2

屏幕捕獲_2018_05_26_16_58_59_676.png

git reset --hard HEAD^返回上次提交

執(zhí)行后蚀浆,HEAD回到f4cefc2這一版。ls當(dāng)前目錄只有 a.md , b.md, c.md搜吧。而d.md 沒了市俊,commit歷史中,b3e234這一版被抹去了滤奈。

屏幕捕獲_2018_05_26_16_59_11_75.png

2.提交了4個文件 a.md , b.md, c.md, d.md.

屏幕捕獲_2018_05_26_17_14_25_943.png

Git revert HEAD^

如下圖摆昧,上次提交的文件c.md消失,ls中剩下a.md , b.md, d.md.

但是上次提交的commit4862f版本沒有消失蜒程,此命令生成了一個新的commit59f37绅你。

屏幕捕獲_2018_05_26_17_14_40_897.png

所以伺帘,修復(fù)一些錯誤,可視情況來使用以上命令:

1.修復(fù)未提交文件中的錯誤(重置)勇吊, 讓工作目錄回到上次提交時的狀態(tài)
$ git reset --hard HEAD
2.修復(fù)已提交文件中的錯誤
$ git revert HEAD

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末曼追,一起剝皮案震驚了整個濱河市窍仰,隨后出現(xiàn)的幾起案子汉规,更是在濱河造成了極大的恐慌,老刑警劉巖驹吮,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件针史,死亡現(xiàn)場離奇詭異,居然都是意外死亡碟狞,警方通過查閱死者的電腦和手機(jī)啄枕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來族沃,“玉大人频祝,你說我怎么就攤上這事〈嘌停” “怎么了常空?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盖溺。 經(jīng)常有香客問我漓糙,道長,這世上最難降的妖魔是什么烘嘱? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任昆禽,我火速辦了婚禮,結(jié)果婚禮上蝇庭,老公的妹妹穿的比我還像新娘醉鳖。我一直安慰自己,他們只是感情好哮内,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布盗棵。 她就那樣靜靜地躺著,像睡著了一般牍蜂。 火紅的嫁衣襯著肌膚如雪漾根。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天鲫竞,我揣著相機(jī)與錄音辐怕,去河邊找鬼。 笑死从绘,一個胖子當(dāng)著我的面吹牛寄疏,可吹牛的內(nèi)容都是我干的是牢。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼陕截,長吁一口氣:“原來是場噩夢啊……” “哼驳棱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起农曲,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤社搅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后乳规,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體形葬,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年暮的,在試婚紗的時候發(fā)現(xiàn)自己被綠了笙以。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡冻辩,死狀恐怖猖腕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情恨闪,我是刑警寧澤倘感,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站凛剥,受9級特大地震影響侠仇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜犁珠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一逻炊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧犁享,春花似錦余素、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至凤巨,卻和暖如春视乐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背敢茁。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工佑淀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人彰檬。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓伸刃,卻偏偏與公主長得像谎砾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子捧颅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容