代碼回滾:簡(jiǎn)述git reset --hard xxx 蚤告、git reset --soft xxx與 git revert xxx三者區(qū)別

我們?cè)谑褂胓it進(jìn)行版本管理的時(shí)候,如果遇到需要回退代碼的情況服爷,一般會(huì)用 git reset 命令杜恰。
我們大致了解一下git大致的工作流程。


git工作流程

首先仍源,想象一下心褐,我正在寫著我的代碼,這個(gè)狀態(tài)對(duì)應(yīng)圖中的 Working diretory笼踩,
這個(gè)時(shí)候檬寂,我的代碼還就是我的,跟 git 半毛錢關(guān)系都沒有戳表。(在Android Studio中對(duì)應(yīng)文件顏色是紅色)

然后桶至,我把當(dāng)前編輯的 A 文件 add 到 git 中昼伴,這個(gè)時(shí)候就跟 git 發(fā)生了關(guān)系,git 接受了我的代碼镣屹,然后把這個(gè)文件存入了自己的暫存區(qū)圃郊,后面我對(duì)這個(gè)文件的更改 ,git 都會(huì)知曉女蜈。這個(gè)狀態(tài)對(duì)應(yīng)圖中的 Stage/Index(在Android Studio中對(duì)應(yīng)文件顏色是綠色或者藍(lán)色)

我把寫好的 A 文件 commit 到 git 持舆,這就有了一次提交歷史。對(duì)應(yīng)圖中的 History伪窖,在 git 中只要 commit 過的文件逸寓,都有各種方式可以恢復(fù),基本來說覆山,就是不會(huì)丟了(在Android Studio中對(duì)應(yīng)文件顏色是白色)

好的竹伸,那么現(xiàn)在,我發(fā)現(xiàn)代碼寫的不好簇宽,需要回退到上一次的提交勋篓,我有幾個(gè)命令可以選擇。

常見以下幾種命令:

git reset --hard
git reset --soft

git reset --hard xxx與git reset --soft

git reset --hard

這個(gè)命令 非常危險(xiǎn) 魏割,是 git 中少有的幾個(gè)會(huì)丟失信息的操作譬嚣。它會(huì)把回退點(diǎn)之前的所有信息都刪掉,一個(gè)不留钞它,干干凈凈拜银。

舉個(gè)例子:
現(xiàn)在我把 A文件修改了兩次,到了C 狀態(tài) 遭垛,并且已提交尼桶。
那么我的分支指針是指向 C , 當(dāng)前文件編輯的狀態(tài)也是在C

(F)
A-B-C
?????????↑
master

我輸入了git reset --hard,結(jié)果會(huì)變成:

(F)
A-B
????↑
master

對(duì)的耻卡, C 狀態(tài)徹底沒有疯汁,再也找不回來牲尺。所以卵酪,沒事不要用這個(gè)命令。

git reset --soft

同樣是這個(gè)狀態(tài):

(F)
A-B-C
???????? ↑
master

我輸入了git reset --soft谤碳,結(jié)果是:

(F)
A-B-C
???? ↑
master

文件狀態(tài)與分支的指針都指向上一個(gè)提交溃卡,C 還是在的,只是沒顯示蜒简。

git revert HEAD

  >git revert 撤銷某次操縱瘸羡,此次造作之前和之后的commit和history都會(huì)保留,并且把這次撤銷作為一次最新的提交搓茬。
  • git revert --HEAD 撤銷前一次的commit
  • git revert --HEAD^ 撤銷前前一次的commit
  • git revert commit (commit 內(nèi)容為指定撤銷的版本號(hào):如d5b992cc5578c67f988f9684e91a6ce13d80473d)犹赖,同樣撤銷也會(huì)作為一次提交進(jìn)行保存队他。)
    注:查看commit版本信息,指令為 git log

我對(duì)項(xiàng)目中的一個(gè)文件進(jìn)行的重命名操作峻村。
原文件名:


原文件名

對(duì)文件重命名

然后將其然后將其提交到本地倉(cāng)庫(kù),這是好我們發(fā)現(xiàn)命名有問題麸折,需要返回原名,我們可以通過再次重命名操作粘昨,或者撤銷已經(jīng)提交到本地倉(cāng)庫(kù)的指令垢啼。

git revert --HEAD

效果:


回退到原文件名

可以清楚的看到revert指令讓我們的操作回退到commit操作的前一步,也就是未對(duì)文件名進(jìn)行更改的狀態(tài)张肾。


代碼回滾常見命名的使用場(chǎng)景:

命令 作用域 常用情景
git reset 提交層面 在私有分支上舍棄一些沒有提交的更改
git reset 文件層面 將文件從緩存去中移除
git checkout 提交層面 切換分支或查看舊版本
git checkout 文件層面 舍棄工作目錄中的更改
git revert 提交層面 在公共分支上回滾更改
git revert 文件層面 (沒有)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末芭析,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吞瞪,更是在濱河造成了極大的恐慌馁启,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尸饺,死亡現(xiàn)場(chǎng)離奇詭異进统,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)浪听,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門螟碎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人迹栓,你說我怎么就攤上這事掉分。” “怎么了克伊?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵酥郭,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我愿吹,道長(zhǎng)不从,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任犁跪,我火速辦了婚禮椿息,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坷衍。我一直安慰自己寝优,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布枫耳。 她就那樣靜靜地躺著乏矾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钻心,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天凄硼,我揣著相機(jī)與錄音,去河邊找鬼捷沸。 笑死帆喇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的亿胸。 我是一名探鬼主播坯钦,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼侈玄!你這毒婦竟也來了婉刀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤序仙,失蹤者是張志新(化名)和其女友劉穎突颊,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體潘悼,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡律秃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了治唤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棒动。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宾添,靈堂內(nèi)的尸體忽然破棺而出船惨,到底是詐尸還是另有隱情,我是刑警寧澤缕陕,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布粱锐,位于F島的核電站,受9級(jí)特大地震影響扛邑,放射性物質(zhì)發(fā)生泄漏怜浅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一蔬崩、第九天 我趴在偏房一處隱蔽的房頂上張望恶座。 院中可真熱鬧,春花似錦舱殿、人聲如沸奥裸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春冈绊,著一層夾襖步出監(jiān)牢的瞬間侠鳄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工死宣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伟恶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓毅该,卻偏偏與公主長(zhǎng)得像博秫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子眶掌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

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

  • git reset和git revert都可以用于撤銷已存在的commit,其中g(shù)it reset可以細(xì)化到針對(duì)單...
    伊凡的一天閱讀 596評(píng)論 0 1
  • 2017.6.11 昨晚睡眠不錯(cuò)召噩,9點(diǎn)到早上7點(diǎn)母赵,只有這么睡才能達(dá)到睡眠時(shí)長(zhǎng)標(biāo)準(zhǔn)呀,不過你睡覺也太夸張了具滴,幾次快被...
    星空下的悠游閱讀 112評(píng)論 0 1
  • 沉默是什么凹嘲,擁有力量嗎?沉默不是沉迷构韵,沉默不是默然施绎,可沉默會(huì)是無(wú)奈嗎?到底應(yīng)該怎么做呢贞绳?今天呀~無(wú)言呢谷醉!
    箐薇閱讀 181評(píng)論 0 0
  • 公司的老板娘有一對(duì)雙胞胎兒子,但是由于當(dāng)時(shí)早產(chǎn)冈闭,小兒子瑞瑞出生時(shí)缺氧俱尼,導(dǎo)致瑞瑞各方面發(fā)育都比不上大兒子,以至于她一...
    快快媽媽育兒說閱讀 150評(píng)論 1 0
  • mp.weixin.qq.com/s “···于是萎攒,最沉重的負(fù)擔(dān)同時(shí)也成了最強(qiáng)盛的生命力的影像遇八。負(fù)擔(dān)越重,...
    楊純閱讀 494評(píng)論 0 1