git reset --hard xxx/soft xxx,以及git revert的區(qū)別和作用

很多時(shí)候,git新手很容易誤操作壳嚎,而git reset --hard xxx/soft xxx、git revert 都是用來撤銷代碼倉庫中的某些更改的绎橘,它們非常相似迟赃,在用的時(shí)候很容易混淆,下面比較一下它們的區(qū)別及作用渴庆。

Git倉庫有三個(gè)主要的組成铃芦,工作目錄、暫存區(qū)襟雷、提交歷史刃滓。

resert

如果修改了某些內(nèi)容,但是還沒有push到遠(yuǎn)程倉庫耸弄,可以用git reset去撤銷更改咧虎,除了在當(dāng)前分支上操作,還可以通過傳入標(biāo)記來修改緩存區(qū)或者工作目錄计呈,這些標(biāo)記限定了git reset的作用域砰诵,常常跟HEAD作為參數(shù)一起使用。
例如:

git resert HEAD^2

reset操作如下圖所示:


1.png
2.png
  • git reset --soft xxx:回退到某個(gè)版本捌显,只退回了commit的信息茁彭,不會(huì)回復(fù)到index file一級(jí)。如果還要提交苇瓣,直接commit即可尉间。也就是說緩存區(qū)和工作目錄都不會(huì)改變,改變的是提交歷史。
  • git reset --hard xxx:徹底退回到某個(gè)版本哲嘲,本都的源碼也會(huì)變?yōu)樯细鱾€(gè)版本的內(nèi)容贪薪,也就是緩存區(qū)和工作目錄都同步到你指定的提交。
    如果你想完全舍棄你沒有提交的改動(dòng)眠副,可以使用git reset --hard HEAD画切。

revert

如果我們修改了某些內(nèi)容,已經(jīng)commit到本地倉庫囱怕,并且push到遠(yuǎn)程倉庫了霍弹,這種情況下想把本地和遠(yuǎn)程倉庫都回退到某個(gè)版本,該怎么做呢娃弓?

前面講到的用git reset只是在本地倉庫中回退版本典格,而遠(yuǎn)程倉庫的版本不會(huì)變化,這樣台丛,及時(shí)本地reset了耍缴,但如果再git pull,那么挽霉,遠(yuǎn)程倉庫的內(nèi)容又會(huì)和本地之前版本的內(nèi)容進(jìn)行merge防嗡,這并不是我們想要的東西。

對(duì)于已經(jīng)把代碼push到遠(yuǎn)程倉庫侠坎,你退回本地代碼其實(shí)也想同時(shí)退回線上代碼蚁趁,回滾到某個(gè)指定的版本,線上線下代碼保持一致实胸。git revert用于撤銷某次操作他嫡,此次操作之前和之后的commit和history都會(huì)保留,即用一個(gè)新提交來消除一個(gè)歷史提交所做的任何修改童芹。

git revert HEAD 撤銷前一次commit
git revert HEAD^ 撤銷前前一次commit
git revert commit xxx 撤銷指定的版本涮瞻,撤銷也會(huì)作為一次提交進(jìn)行保存鲤拿。

revert之后你的本地代碼會(huì)回滾到指定的歷史版本假褪,然后再git push。

  • git revert是用一次新的commit來回滾之前的commit近顷,git reset是直接刪除指定的commit生音。
  • git reset是把HEAD向后移動(dòng)了一下,而git revert是HEAD繼續(xù)前進(jìn)窒升,只是新的commit的內(nèi)容跟要revert的內(nèi)容正好相反缀遍,能夠抵消要被revert的內(nèi)容。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末饱须,一起剝皮案震驚了整個(gè)濱河市域醇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖譬挚,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锅铅,死亡現(xiàn)場離奇詭異,居然都是意外死亡减宣,警方通過查閱死者的電腦和手機(jī)盐须,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來漆腌,“玉大人贼邓,你說我怎么就攤上這事∶颇颍” “怎么了塑径?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長填具。 經(jīng)常有香客問我晓勇,道長,這世上最難降的妖魔是什么灌旧? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任绑咱,我火速辦了婚禮,結(jié)果婚禮上枢泰,老公的妹妹穿的比我還像新娘描融。我一直安慰自己,他們只是感情好衡蚂,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布窿克。 她就那樣靜靜地躺著,像睡著了一般毛甲。 火紅的嫁衣襯著肌膚如雪年叮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天玻募,我揣著相機(jī)與錄音只损,去河邊找鬼。 笑死七咧,一個(gè)胖子當(dāng)著我的面吹牛跃惫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播艾栋,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼爆存,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了蝗砾?” 一聲冷哼從身側(cè)響起先较,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤携冤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后闲勺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體噪叙,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年霉翔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了睁蕾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡债朵,死狀恐怖子眶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情序芦,我是刑警寧澤臭杰,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站谚中,受9級(jí)特大地震影響渴杆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜宪塔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一磁奖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧某筐,春花似錦比搭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抄囚,卻和暖如春霉赡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背幔托。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工穴亏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人柑司。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓迫肖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親攒驰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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