小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Git學(xué)習(xí)筆記03--git reset

 Kinetis 2014-01-14

Git reset Git最常用的命令之一,也是最危險(xiǎn)最容易誤用的命令。

用法一:git reset [-q] [<commit>] [--] <paths>...

用法二:git reset [--soft --mixed | --hard | --merge | --keep] [-q] [<commit>]

以上兩種用法,<commit>都是可選項(xiàng),可以使用下引用或提交ID,如果省略則相當(dāng)于使用了HEAD的指向作為提交ID

上面的兩種用法的區(qū)別在于,第一種在命令中包含路徑<paths>。為了避免路徑和引用(或者提交ID)同名而發(fā)生沖突,可以在<paths>前用兩個(gè)連續(xù)的短線(減號(hào))作為做分隔。

第一種用法(包含了路徑<paths>的用法)不會(huì)重置引用,更不會(huì)改變工作區(qū),而是用指定提交狀態(tài)(<commit>)下的文件(<paths>)替換掉暫存區(qū)中的文件。例如命令git reset HEAD <paths>相當(dāng)于取消之前執(zhí)行的git add <paths>命令時(shí)改變的暫存區(qū)。

第二種用法(不使用路徑<paths>的用法)則會(huì)重置引用。根據(jù)不同的選項(xiàng),可以對(duì)暫存區(qū)或工作區(qū)進(jìn)行重置。參照下面的版本庫(kù)模型圖,來(lái)看一看不同的參數(shù)對(duì)第二種重置語(yǔ)法的影響。

clip_image002

命令格式:git reset [--soft | --mixed | --hard] [<commit>]

1)使用參數(shù)--hard,如git reset --hard <commit>

會(huì)執(zhí)行上圖中的全部動(dòng)作①、②、③,即:

①替換引用的指向。引用指向新的提交ID。

②替換暫存區(qū)。替換后,暫存區(qū)的內(nèi)容和引用指向的目錄樹(shù)一致。

③替換工作區(qū)。替換后,工作區(qū)的內(nèi)容變得和暫存區(qū)一致,也和HEAD所指向的目錄樹(shù)內(nèi)容相同。

2)使用參數(shù)--soft,如 git reset --soft <commit>

會(huì)執(zhí)行上圖中的操作①。即只更改引用的指向,不改變暫存區(qū)和工作區(qū)。

3)使用參數(shù)--mixed或者不使用參數(shù)(默認(rèn)為--mixed),如 git reset <commit>

會(huì)執(zhí)行上圖中的操作①和②。即更改引用的指向及重置暫存區(qū),但是不改變工作區(qū)。

 

 

 

 

下面通過(guò)一些示例,看一下重置命令的不同用法。

 

$ git reset

僅用HEAD指向的目錄樹(shù)重置暫存區(qū),工作區(qū)不會(huì)受到影響,相當(dāng)于將之前用git add      令更新到暫存區(qū)的內(nèi)容撤出暫存區(qū)。引用也未改變,因?yàn)橐弥刂玫?/span>HEAD相當(dāng)于沒(méi)      有重置。

$ git reset HEAD

同上

$ git reset -- filename

僅將文件filename 的改動(dòng)撤出暫存區(qū),暫存區(qū)中其他文件不改變。相當(dāng)于命令git add filename 的反射操作。

$ git reset HEAD filename

同上。

$ git reset --soft HEAD^

工作區(qū)和暫存區(qū)不改變,但是引用向前回退一次。當(dāng)對(duì)最新的提交說(shuō)明或者提交的更改不滿意時(shí),撤銷最新的提交以便重新提交。

之前提到過(guò)修補(bǔ)提交命令git commit --amend,用于對(duì)最新的提交進(jìn)行重新提交以修補(bǔ)錯(cuò)誤的提交說(shuō)明或者錯(cuò)誤的提交文件。修補(bǔ)提交命令實(shí)際上相當(dāng)于執(zhí)行了下面兩條命令。(注:文件.git/COMMIT_EDITMSG保存了上次的提交日志)

$ git reset --soft HEAD^
$ git commit -e -F .git/COMMIT_EDITMSG

 

$ git reset HEAD^

工作不改變,但是暫存區(qū)會(huì)回退到上一次提交之前,引用也會(huì)回退一次。

$ git reset --mixed HEAD^

同上

$ git reset --hard HEAD^

徹底撤銷最近的提交。引用回退到前一次,而且工作區(qū)和暫存區(qū)都會(huì)回退到上一次提交的狀態(tài)。自上一次以來(lái)的提交全部丟失。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多