大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Git教程
Git標(biāo)簽管理
Git分支
Git操作
Git應(yīng)用
GitHub應(yīng)用
IDEA對于Git&GitHub的支持
Git與GitHub使用注意事項

Git撤銷修改

自然,你是不會犯錯的。不過現(xiàn)在是凌晨兩點,你正在趕一份工作報告,你在readme.txt中添加了一行:

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
My stupid boss still prefers SVN.

在你準(zhǔn)備提交前,一杯咖啡起了作用,你猛然發(fā)現(xiàn)了stupid boss可能會讓你丟掉這個月的獎金!

既然錯誤發(fā)現(xiàn)得很及時,就可以很容易地糾正它。你可以刪掉最后一行,手動把文件恢復(fù)到上一個版本的狀態(tài)。如果用git status查看一下:

$ 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:   readme.txt

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

你可以發(fā)現(xiàn),Git會告訴你,git checkout -- file可以丟棄工作區(qū)的修改:

$ git checkout -- readme.txt

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作區(qū)的修改全部撤銷,這里有兩種情況:

一種是readme.txt自修改后還沒有被放到暫存區(qū),現(xiàn)在,撤銷修改就回到和版本庫一模一樣的狀態(tài);

一種是readme.txt已經(jīng)添加到暫存區(qū)后,又作了修改,現(xiàn)在,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)。

總之,就是讓這個文件回到最近一次git commit或git add時的狀態(tài)。

現(xiàn)在,看看readme.txt的文件內(nèi)容:

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.

文件內(nèi)容果然復(fù)原了。

git checkout -- file命令中的--很重要,沒有--,就變成了“切換到另一個分支”的命令,我們在后面的分支管理中會再次遇到git checkout命令。

現(xiàn)在假定是凌晨3點,你不但寫了一些胡話,還git add到暫存區(qū)了:

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
My stupid boss still prefers SVN.

$ git add readme.txt

慶幸的是,在commit之前,你發(fā)現(xiàn)了這個問題。用git status查看一下,修改只是添加到了暫存區(qū),還沒有提交:

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

	modified:   readme.txt

Git同樣告訴我們,用命令git reset HEAD 可以把暫存區(qū)的修改撤銷掉(unstage),重新放回工作區(qū):

$ git reset HEAD readme.txt
Unstaged changes after reset:
M	readme.txt

git reset命令既可以回退版本,也可以把暫存區(qū)的修改回退到工作區(qū)。當(dāng)我們用HEAD時,表示最新的版本。

再用git status查看一下,現(xiàn)在暫存區(qū)是干凈的,工作區(qū)有修改:

$ 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:   readme.txt

還記得如何丟棄工作區(qū)的修改嗎?

$ git checkout -- readme.txt

$ git status
On branch master
nothing to commit, working tree clean

整個世界終于清靜了!

現(xiàn)在,假設(shè)你不但改錯了東西,還從暫存區(qū)提交到了版本庫,怎么辦呢?還記得版本回退一節(jié)嗎?可以回退到上一個版本。不過,這是有條件的,就是你還沒有把自己的本地版本庫推送到遠(yuǎn)程。還記得Git是分布式版本控制系統(tǒng)嗎?我們后面會講到遠(yuǎn)程版本庫,一旦你把stupid boss提交推送到遠(yuǎn)程版本庫,你就真的慘了……

小結(jié)

又到了小結(jié)時間。

場景1:當(dāng)你改亂了工作區(qū)某個文件的內(nèi)容,想直接丟棄工作區(qū)的修改時,用命令git checkout -- file。

場景2:當(dāng)你不但改亂了工作區(qū)某個文件的內(nèi)容,還添加到了暫存區(qū)時,想丟棄修改,分兩步,第一步用命令git reset HEAD<file> ,就回到了場景1,第二步按場景1操作。

場景3:已經(jīng)提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節(jié),不過前提是沒有推送到遠(yuǎn)程庫。

全部教程
主站蜘蛛池模板: 奇米日日| 免费成人一级片 | 久久香蕉国产精品一区二区三 | 亚洲午夜日韩高清一区 | 素人巨乳被调教 | 97在线观看完整免费 | 97午夜视频| 美女在线视频观看影院免费天天看 | 亚洲成人第一页 | 国产亚洲女在线精品 | 四虎4hutv永久在线影院 | 国产精品香蕉在线观看首页 | 国产日本三级 | 久久大香伊蕉在人线观看热2 | 欧美日韩一区二区三区自拍 | 深夜在线免费观看 | 九九精品成人免费国产片 | 91天堂97年嫩模在线观看 | 欧美成人天天综合在线视色 | 99久久精品一区二区三区 | 天堂网一区 | 欧洲成人全免费视频网站 | 天天曰夜夜曰 | 亚洲全黄 | 日韩中文字幕网站 | 韩国网站爱久久 | 欧洲性大片xxxxx久久久 | 亚洲精品色一区色二区色三区 | www.香蕉视频 | 国产精品一区二区三区免费视频 | 视频一区国产精品 | 欧美va亚洲va在线观看蝴蝶网 | 婷婷视频在线 | 欧美男女视频 | 国产成人亚洲精品无广告 | 久久精品国产亚洲沈樵 | 天天草天天干 | 狠狠久久久久久亚洲综合网 | 亚洲综合首页 | 亚洲视频在线不卡 | 香蕉视频在线观看网站 |