git reset 命令詳解

命令概述

當(dāng)要回退到某一次提交的狀態(tài)時唇跨,可以使用git reset命令稠通。有三個常用參數(shù):--soft,--mixed买猖,--hard改橘。按照Git文檔的習(xí)慣,可以寫作
git reset [--soft | --mixed | --hard] [<commit>]

其中玉控,<commit>是指commit的hashcode飞主。

也可以使用HEAD代替<commit>,命令為
git reset [--soft | --mixed | --hard] [HEAD]

其中高诺,

  • HEAD 最近一個提交(倒數(shù)第一次)

  • HEAD^ 上一次提交(倒數(shù)第二次)

  • HEAD^^ 上一次的上一次提交(倒數(shù)第三次)

  • HEAD^^^ 倒數(shù)第四次提交

或者碌识,

  • HEAD~0 最近一個提交(倒數(shù)第一次)

  • HEAD~1 上一次提交(倒數(shù)第二次)

  • HEAD^2 上一次的上一次提交(倒數(shù)第三次)

  • HEAD^3 倒數(shù)第四次提交

如果在最近一次提交之后,沒有任何文件修改虱而,則使用HEAD或者HEAD~0筏餐,不會產(chǎn)生任何效果。

三個參數(shù)對比

通過以下公式牡拇,可以直觀的反映出三個參數(shù)的區(qū)別:

git reset --mixed <commit> + git add . = git reset --soft <commit>

git reset --hard <commit>
= git reset --soft <commit> + git reset --hard HEAD
= git reset --mixed <commit> + git reset --hard HEAD

詳細(xì)的介紹魁瞪,可以參考CSDN的文章:關(guān)于 git reset 命令幾個常用參數(shù)的理解

需要指出的是诅迷,文章對--hard參數(shù)的說明不完全準(zhǔn)確佩番。--hard舍棄的提交,并沒有徹底刪除罢杉,還存在倉庫里趟畏,如果知道被舍棄提交的hashcode,仍然可以恢復(fù)該提交滩租。

--hard參數(shù)的使用

當(dāng)要回退到之前某一次提交赋秀,并修改文件,且不希望放棄后面已有提交的時候律想,有兩種操作方式猎莲。

1、完全在本地倉庫完成

如果想在本地完成技即,可以在reset之前著洼,新建一個分支,保存狀態(tài);在reset之后身笤,修改文件豹悬,并提交,然后將新建分支合并到reset所在分支液荸。這時瞻佛,需手動消除沖突,重新跟蹤被修改文件娇钱,并提交伤柄。最后push到遠(yuǎn)程倉庫。

上圖顯示的就是這一過程文搂。

我們在狀態(tài)C适刀,新建分支branch-C,然后在master分支细疚,reset到狀態(tài)B蔗彤,修改文件,并提交狀態(tài)B1疯兼。這時然遏,如果將branch-C合并到master,Git會提示沖突吧彪,需要手動消除待侵。

2、借助遠(yuǎn)程倉庫完成

如果借助遠(yuǎn)程倉庫姨裸,則不必新建分支秧倾,直接reset到之前的某一次提交,修改文件傀缩,然后提交那先。這時,如果直接push到遠(yuǎn)程倉庫赡艰,Git會提示失敗售淡,需要pull遠(yuǎn)程倉庫到本地,然后手動消除沖突慷垮,重新跟蹤被修改的文件揖闸,并提交,最后push料身。

上圖顯示了這一過程汤纸。

在commit d809fd46,reset到狀態(tài)B芹血,修改文件贮泞,并提交狀態(tài)B2楞慈。這時,如果直接push隙畜,Git會提示失敗抖部,需要先pull遠(yuǎn)程倉庫到本地,Git提示沖突议惰,然后手動消除沖突。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乡恕,一起剝皮案震驚了整個濱河市言询,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌傲宜,老刑警劉巖运杭,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異函卒,居然都是意外死亡辆憔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門报嵌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來虱咧,“玉大人,你說我怎么就攤上這事锚国⊥笱玻” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵血筑,是天一觀的道長绘沉。 經(jīng)常有香客問我,道長豺总,這世上最難降的妖魔是什么车伞? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮喻喳,結(jié)果婚禮上另玖,老公的妹妹穿的比我還像新娘。我一直安慰自己沸枯,他們只是感情好日矫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绑榴,像睡著了一般哪轿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上翔怎,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天窃诉,我揣著相機(jī)與錄音杨耙,去河邊找鬼。 笑死飘痛,一個胖子當(dāng)著我的面吹牛珊膜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宣脉,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼车柠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了塑猖?” 一聲冷哼從身側(cè)響起竹祷,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎羊苟,沒想到半個月后塑陵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜡励,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年令花,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凉倚。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡兼都,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出占遥,到底是詐尸還是另有隱情俯抖,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布瓦胎,位于F島的核電站芬萍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏搔啊。R本人自食惡果不足惜柬祠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望负芋。 院中可真熱鬧漫蛔,春花似錦、人聲如沸旧蛾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锨天。三九已至毯盈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間病袄,已是汗流浹背搂赋。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工赘阀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人脑奠。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓基公,卻偏偏與公主長得像,于是被迫代替她去往敵國和親宋欺。 傳聞我的和親對象是個殘疾皇子轰豆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355

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

  • git常用命令 GIT常用命令備忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章閱讀 8,487評論 1 26
  • Add & Commit git init 初始化一個 Git 倉庫(repository),即把當(dāng)前所在目錄變成...
    冬絮閱讀 4,841評論 0 9
  • 一齿诞、電腦本地初始化一個倉庫 1. git init: 初始化一個電腦上本地倉庫 終端進(jìn)入項目目錄秒咨,輸入: 該命令將...
    dragon_li閱讀 2,929評論 1 4
  • 在沒遇到最合適的那個人之前…我有大把的時間去變的更優(yōu)秀
    7秒碎碎念閱讀 150評論 0 0
  • 幸福的家庭都相同,不同的家庭各有各的各的不幸菩咨。昨天我問我外公:你認(rèn)為最重要的事是什么吠式,他說,幸福抽米。我說特占,幸福是一個...
    哭泣的橙子閱讀 356評論 0 4