二吹埠、GIT基礎(chǔ)-撤消修改

4缘琅、撤消修改

我們編輯Hello.txt文件,添加一行新的內(nèi)容后保存翩隧,這時(shí)我們發(fā)現(xiàn)最后一行的內(nèi)容添加有誤堆生,我們需要?jiǎng)h除它雷酪。這時(shí)我們可以選擇手工刪除剛才添加的最后一行,把文件恢復(fù)糯景,我們也可以使用git status先查看狀態(tài):

Hello world
first modify
second modify
three modify
four modify
[root@node1 git-test]# echo "five modify" >>Hello.txt 
[root@node1 git-test]# cat Hello.txt 
Hello world
first modify
second modify
three modify
four modify
five modify
[root@node1 git-test]# git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   Hello.txt

no changes added to commit (use "git add" and/or "git commit -a")
你可能會(huì)發(fā)現(xiàn),Git告訴你最住,git checkout –file可以刪除工作區(qū)的修改:
[root@node1 git-test]# git checkout -- Hello.txt 
[root@node1 git-test]# git status
On branch master
nothing to commit, working tree clean
You have new mail in /var/spool/mail/root
[root@node1 git-test]# cat Hello.txt 
Hello world
first modify
second modify
three modify
four modify
我們?cè)倏戳硪环N情況涨缚,
[root@node1 git-test]# echo "five modify" >>Hello.txt 
[root@node1 git-test]# git add Hello.txt 
[root@node1 git-test]# git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   Hello.txt

[root@node1 git-test]# echo "six modify" >>Hello.txt 
[root@node1 git-test]# git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   Hello.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   Hello.txt

[root@node1 git-test]# git checkout -- Hello.txt 
[root@node1 git-test]# git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   Hello.txt

[root@node1 git-test]# cat Hello.txt 
Hello world
first modify
second modify
three modify
four modify
five modify

最后我們總結(jié)一下:
一種是readme.txt自修改后還沒有被放到暫存區(qū)兰吟,現(xiàn)在茂翔,撤銷修改就回到和版本庫(kù)一模一樣的狀態(tài);
一種是readme.txt已經(jīng)添加到暫存區(qū)后惭嚣,又作了修改晚吞,現(xiàn)在谋国,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)。
總之捌蚊,就是讓這個(gè)文件回到最近一次git commit或git add時(shí)的狀態(tài)。最后要注意git checkout –file命令中的--,這個(gè)很重要牡整,如果沒有—這個(gè)命令就是另外的作用了溺拱。我們?cè)诤竺婢唧w會(huì)何用迫摔。
現(xiàn)在我們把所有的修改都已經(jīng)提交到了暫存區(qū),還沒有commit句占,這個(gè)時(shí)候我們發(fā)現(xiàn)剛才的修改有錯(cuò)誤,那么我們可以使用git reset HEAD file把暫存區(qū)的修改撤銷掉杨拐,重新放回工作區(qū):

On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   Hello.txt

You have new mail in /var/spool/mail/root
[root@node1 git-test]# git reset HEAD Hello.txt 
Unstaged changes after reset:
M   Hello.txt
[root@node1 git-test]# git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   Hello.txt

no changes added to commit (use "git add" and/or "git commit -a")
[root@node1 git-test]#

我們將所有的修改都commit,這個(gè)時(shí)候如果發(fā)現(xiàn)錯(cuò)誤哄陶,想回退到剛才提交之前的版本該怎么處理哺壶?
首先我們通過git log命令查看我們的提交歷史:

6cfd50cb9f0edec3fc59dd59845b4c6e3b5ec22a git reset HEAD test
8d9eb9afd8c38821cc84ffe47fe2261386f48a4f aaa
6597abf6bb3617c2cbaad12cf1749d9771464ecd git mv test
2b1583efcc6e18d0f80946f88d416b140b01367a delete Hello.txt
9ccca93a00bd91a4883595b2f44a416ffb5ede9e mv test
3a2db18768b228b3af6fa878e36544d15e35cfa4 rm test finish
a80c6a946c0968edcbe3b9826629112b147a84e2 rm test
4794019de33bc2bfcea823ded27f80e98230e114 jump git add submit
b79795b531900217191da0db8b36ee220c074ad4 tree submit
a306d944c27e569f8003a82f7e251159cb61db33 second submit
5e874cc11b31065c65d4fd4ed7e6a275dca524d5 first submit
我們使用git reset –hard b7979回到第三次提交的版本:
[root@node1 git-test]# git reset --hard b79795
[root@node1 git-test]# git log --pretty=oneline
b79795b531900217191da0db8b36ee220c074ad4 tree submit
a306d944c27e569f8003a82f7e251159cb61db33 second submit
5e874cc11b31065c65d4fd4ed7e6a275dca524d5 first submit
[root@node1 git-test]# cat README 
My first git test project
first modify
second modify
three modify

我們可以使用git reset –hard commit-id返回指定的版本至扰,但是返回后git log里面就只有當(dāng)前提交之前的提交記錄资锰。
Git的版本回退速度非潮炼牛快接剩,因?yàn)镚it在內(nèi)部有個(gè)指向當(dāng)前版本的HEAD指針,當(dāng)你回退版本的時(shí)候疫稿,Git僅僅是把HEAD從指向當(dāng)前的版本改為指向你要回退的版本,然后順便把工作區(qū)的文件更新舀凛。
小結(jié):
場(chǎng)景1:當(dāng)你改亂了工作區(qū)某個(gè)文件的內(nèi)容猛遍,想直接丟棄工作區(qū)的修改時(shí)号坡,用命令git checkout -- file宽堆。
場(chǎng)景2:當(dāng)你不但改亂了工作區(qū)某個(gè)文件的內(nèi)容,還添加到了暫存區(qū)時(shí)壁肋,想丟棄修改浸遗,分兩步箱亿,第一步用命令git reset HEAD file极景,就回到了場(chǎng)景1驾茴,第二步按場(chǎng)景1操作盼樟。
場(chǎng)景3:已經(jīng)提交了不合適的修改到版本庫(kù)時(shí),想要撤銷本次提交锈至,使用git reset --hard commit-id回到指定的版本晨缴,不過前提是沒有推送到遠(yuǎn)程庫(kù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末峡捡,一起剝皮案震驚了整個(gè)濱河市击碗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌们拙,老刑警劉巖稍途,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異砚婆,居然都是意外死亡械拍,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門甲馋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人痊远,你說我怎么就攤上這事』弦拢” “怎么了哼凯?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我蔑祟,道長(zhǎ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
  • 文/蒼蘭香墨 我猛地睜開眼闯估,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(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ú)居荒郊野嶺守林人離奇死亡豁状,尸身上長(zhǎng)有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
  • 我被黑心中介騙來泰國(guó)打工歧匈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斟冕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親霍衫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子逛揩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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

  • Git是目前最流行的版本管理系統(tǒng)喷众,也是最先進(jìn)的分布式版本控制系統(tǒng)(distributed version cont...
    pro648閱讀 5,676評(píng)論 1 17
  • 今天剽悍晨讀分享書籍《聰明女人背小包》通過背小包讓你的人生過的更好,更透視出人生的哲學(xué)履婉。 哈哈!沒忘記前天說過...
    剽悍的今天閱讀 141評(píng)論 0 1
  • 昨天聽伯凡日志錄,理解了一個(gè)新的詞匯——行為經(jīng)濟(jì)學(xué),也叫怪誕行為學(xué)。是人的一種可以預(yù)見的非理性行為酷愧。 大家可以回憶...
    荷語微光閱讀 851評(píng)論 0 1
  • 今夜不想入睡,想靜靜地守候,靜靜地看著時(shí)間的數(shù)字在變化,從此刻稽煤,一直到0:00驰坊。 以前一直覺得“守歲”就是除夕夜守...
    如伊老師閱讀 233評(píng)論 0 1
  • 回到空中!在床的底下有個(gè)隱形的掃描儀浆竭,它可以檢測(cè)你的健康裂垦,或者有什么敵人之類的。而那掃描儀可不是一般的掃描儀,當(dāng)它...
    最愛金錢的丸子閱讀 236評(píng)論 3 2