有關(guān)Git的那些事兒(六)—修改

Git管理的是修改,而非文件本身污它。增加剖踊、刪除、甚至是創(chuàng)建新文件都是修改衫贬。

Git既可以管理修改德澈,也可以撤銷(xiāo)修改。

下面我們分別看看這兩部分內(nèi)容固惯。

管理修改

這個(gè)時(shí)候梆造,可能有人不明白,到底什么是管理修改呢葬毫?我們來(lái)舉個(gè)小栗子看看哈镇辉。

對(duì)之前的love.txt文件進(jìn)行如下修改:

I love you so much as the mouse like rice.
Do you know?
Every day
Hey,Julie.
Today is Tuesday.

之后添加文件到版本庫(kù),并且查看此時(shí)的狀態(tài)贴捡。

git add love.txt
git status

命令行回復(fù)如下:

On branch master
Changes to be committed:
  (use “git reset HEAD <file>…” to unstage)

    modified:   love.txt

再修改love.txt如下:

I love you so much as the mouse like rice.
Do you know?
Every day
Hey,Julie.
I know today is Tuesday.

現(xiàn)在忽肛,提交文件到版本庫(kù):

git commit -m “Tuesday”

命令行回復(fù)如下:

[master 7238888] “Tuesday”
 1 file changed, 2 insertions(+), 1 deletion(-)

現(xiàn)在,再次查看狀態(tài):

git status

命令行回復(fù)如下:

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:   love.txt

no changes added to commit (use “git add” and/or “git commit -a”)

很明顯烂斋,第二次的修改沒(méi)有被提交屹逛。因?yàn)槲覀冊(cè)诘诙涡薷暮鬀](méi)有使用add命令,修改并沒(méi)有進(jìn)入緩存區(qū)汛骂,所以提交的時(shí)候沒(méi)有第二次修改的內(nèi)容罕模。

現(xiàn)在,我們用git diff HEAD — love.txt命令查看一下版本庫(kù)中最新版本和工作區(qū)的區(qū)別:

git diff HEAD -- love.txt

命令行回復(fù)如下:

*diff —git a/love.txt b/love.txt*
*index e88da71..8347d74 100644*
*— a/love.txt*
*+++ b/love.txt*
@@ -2,4 +2,4 @@ I love you so much as the mouse like rice.
 Do you know?
 Every day
 Hey,Julie.
-Today is Tuesday.
\ No newline at end of file
+I know today is Tuesday.
\ No newline at end of file

版本庫(kù)中最新版本和工作區(qū)中存放的版本的區(qū)別一目了然帘瞭,第二次修改沒(méi)有被提交淑掌。

撤銷(xiāo)修改

有修改,就有可能犯錯(cuò)蝶念。這一輩子誰(shuí)還沒(méi)有犯糊涂的時(shí)候呢抛腕?知錯(cuò)能改善莫大焉诈悍。咱來(lái)看看如何改這錯(cuò)誤。

假如兽埃,你在love.txt中無(wú)意添加了一句不太好的言語(yǔ):

I love you so much as the mouse like rice.
Do you know?
Every day
Hey,Julie.
I know today is Tuesday.
I hate Lilei.

過(guò)了一會(huì)兒侥钳,你突然覺(jué)得這樣不妥。怎么辦柄错?咱先git status看看具體情況再說(shuō)舷夺。

git status

此時(shí),命令行回復(fù)如下信息:

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:   love.txt

no changes added to commit (use “git add” and/or “git commit -a”)

其實(shí)售貌,答案已經(jīng)出現(xiàn)啦给猾。Git告訴我們,使用git checkout - <file>可以丟棄工作區(qū)的修改內(nèi)容颂跨。

我們來(lái)試試:

git checkout --love.txt

此時(shí)查看文件內(nèi)容:

cat love.txt

命令行輸出如下:

I love you so much as the mouse like rice.
Do you know?
Every day
Hey,Julie.
Today is Tuesday.

我們又回到了最初遇見(jiàn)的地方~

這個(gè)時(shí)候有人可能有這樣的疑問(wèn):如果我不僅修改了內(nèi)容敢伸,還提交到了緩存區(qū),想撤銷(xiāo)恒削,怎么破池颈?

所謂車(chē)到山前必有路,咱們?cè)囋嚳磫h~

現(xiàn)在钓丰,我們添加了一行不妥的話躯砰,并且git add到了緩存區(qū)。此時(shí)携丁,使用cat <file>命令查看一下文本中的內(nèi)容:

cat love.txt

命令行顯示如下:

I love you so much as the mouse like rice.
Do you know?
Every day
Hey,Julie.
Today is Tuesday.
Lilei is a pig.

不幸中的萬(wàn)幸是琢歇,在commit之前發(fā)現(xiàn)了錯(cuò)誤,我們?cè)侔l(fā)git status梦鉴,問(wèn)問(wèn)Git有什么靈丹妙藥李茫。

git status

Git告訴我們?nèi)缦拢?/p>

On branch master
Changes to be committed:
  (use “git reset HEAD <file>…” to unstage)

    modified:   love.txt

Git很清楚地告訴我們,用git reset HEAD <file>命令可以撤銷(xiāo)掉添加到緩存區(qū)的修改肥橙。

git reset HEAD love.txt

此時(shí)魄宏,命令行輸出:

Unstaged changes after reset:
M   love.txt

此時(shí),查看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:   love.txt

no changes added to commit (use “git add” and/or “git commit -a”)

發(fā)現(xiàn)了嗎娜庇?如果你此時(shí)不知道需要什么指令的時(shí)候,不妨試一試git status指令方篮,Git會(huì)告訴你接下來(lái)有可能出現(xiàn)什么情況,并且告訴你應(yīng)該怎么應(yīng)對(duì)励负。

如果此時(shí)藕溅,你不僅添加到緩存區(qū),并且提交到版本庫(kù)继榆,怎么破巾表?請(qǐng)參照第四小節(jié)內(nèi)容(穿越歷史)汁掠。溫故而知新,可以為師矣集币。

本小節(jié)內(nèi)容總結(jié):

  1. 修改如果不適用git add命令進(jìn)行添加到緩存區(qū)(stage)考阱,就不會(huì)被提交到版本庫(kù)中。
  2. git diff HEAD -- <fileName>指令鞠苟,可以查看當(dāng)前版本庫(kù)中的版本和工作區(qū)中的版本有何不同乞榨?
  3. 若修改了工作區(qū)內(nèi)容,還未添加到緩存區(qū)当娱,想撤銷(xiāo)吃既,使用命令git checkout --<file>
  4. 若修改了工作區(qū)內(nèi)容,并且已添加到緩存區(qū)跨细,但是未提交鹦倚,想撤銷(xiāo),可以使用命令git reset HEAD <file>冀惭。
  5. 如果已經(jīng)將修改提交到了版本庫(kù)中震叙,想撤銷(xiāo),可以參照第四小節(jié)(穿越歷史)內(nèi)容散休。
  6. 友情提示:如果不知道該使用什么命令捐友,可以使用git status,問(wèn)問(wèn)Git溃槐,它會(huì)告訴你接下來(lái)可能出現(xiàn)的情況以及對(duì)應(yīng)的指令匣砖。

好啦。今天就到這里啦昏滴。下節(jié)再見(jiàn)哈~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末猴鲫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子谣殊,更是在濱河造成了極大的恐慌拂共,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姻几,死亡現(xiàn)場(chǎng)離奇詭異宜狐,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)蛇捌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)抚恒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人络拌,你說(shuō)我怎么就攤上這事俭驮。” “怎么了春贸?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵混萝,是天一觀的道長(zhǎng)遗遵。 經(jīng)常有香客問(wèn)我,道長(zhǎng)逸嘀,這世上最難降的妖魔是什么车要? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮崭倘,結(jié)果婚禮上翼岁,老公的妹妹穿的比我還像新娘。我一直安慰自己绳姨,他們只是感情好登澜,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著飘庄,像睡著了一般脑蠕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上跪削,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天谴仙,我揣著相機(jī)與錄音,去河邊找鬼碾盐。 笑死晃跺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的毫玖。 我是一名探鬼主播掀虎,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼付枫!你這毒婦竟也來(lái)了烹玉?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤阐滩,失蹤者是張志新(化名)和其女友劉穎二打,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體掂榔,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡继效,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了装获。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瑞信。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖饱溢,靈堂內(nèi)的尸體忽然破棺而出喧伞,到底是詐尸還是另有隱情,我是刑警寧澤绩郎,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布潘鲫,位于F島的核電站,受9級(jí)特大地震影響肋杖,放射性物質(zhì)發(fā)生泄漏溉仑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一状植、第九天 我趴在偏房一處隱蔽的房頂上張望浊竟。 院中可真熱鬧,春花似錦津畸、人聲如沸振定。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)后频。三九已至,卻和暖如春暖途,著一層夾襖步出監(jiān)牢的瞬間卑惜,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工驻售, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留露久,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓欺栗,卻偏偏與公主長(zhǎng)得像毫痕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子迟几,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

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

  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git消请,從https:/...
    落魂灬閱讀 12,652評(píng)論 4 54
  • Git 基礎(chǔ) 基本原理 客戶(hù)端并不是只提取最新版本的文件快照,而是把代碼倉(cāng)庫(kù)完整的鏡像下來(lái)瘤旨。這樣一來(lái)梯啤,任何一處協(xié)同...
    __silhouette閱讀 15,860評(píng)論 5 147
  • Git 命令行學(xué)習(xí)筆記 Git 基礎(chǔ) 基本原理 客戶(hù)端并不是只提取最新版本的文件快照,而是把代碼倉(cāng)庫(kù)完整的鏡像下來(lái)...
    sunnyghx閱讀 3,905評(píng)論 0 11
  • Git常用語(yǔ)法 [TOC] Git簡(jiǎn)介 描述 ? Git(讀音為/g?t/存哲。)是一個(gè)開(kāi)源的分布式版本控制系統(tǒng)因宇,...
    君惜丶閱讀 3,500評(píng)論 0 13
  • 水果是一個(gè)很好的東西,多吃的話會(huì)對(duì)我們的身體有很多的好吃祟偷,比如可以補(bǔ)充我們體內(nèi)所缺的水份察滑,可以促進(jìn)我們身體新陳代謝...
    習(xí)慣與瘦身閱讀 196評(píng)論 0 0