開(kāi)發(fā)人員常常遇到這種情況:花了幾天時(shí)間一直在做一個(gè)新功能,已經(jīng)改了差不多十幾個(gè)文件,突然有一個(gè)bug需要緊急解決,然后給一個(gè)build測(cè)試組。在Git問(wèn)世之前基本上靠手動(dòng)備份,費(fèi)時(shí)且容易出錯(cuò)。 git stash命令簡(jiǎn)而言之就是幫助開(kāi)發(fā)人員暫時(shí)擱置當(dāng)前已做的改動(dòng),倒退到改動(dòng)前的狀態(tài),進(jìn)行其他的必要操作(比如發(fā)布,或者解決一個(gè)bug,或者branch,等等),之后還可以重新載入之前擱置的改動(dòng),很cool吧? 首先,用git add把所有的改動(dòng)加到staging area。
git add . 接著用git stash把這些改動(dòng)擱置。 git stash 到這里,當(dāng)前工作平臺(tái)就回復(fù)到改動(dòng)之前了。該干嘛干嘛,此處省略1萬(wàn)字。 需要找回之前擱置的改動(dòng)繼續(xù)先前的工作了? git stash apply 即可。 也可以用 git stash list 來(lái)查看所有的擱置版本(可能擱置了很多次,最好不要這樣,容易搞混) 在出現(xiàn)一個(gè)擱置棧的情況下,比如如果你想找回棧中的第2個(gè),可以用 git stash apply stash@{1} 如果想找回第1個(gè),可以用 git stash pop 如果想刪除一個(gè)stash,git stash drop <id> 刪除所有stash,git stash clear 轉(zhuǎn)載二:
我第一次用這個(gè)命令時(shí)被坑過(guò),經(jīng)過(guò)是這樣的:我發(fā)現(xiàn)有一個(gè)類(lèi)是多余的,想刪掉它又擔(dān)心以后需要查看它的代碼,想保存它但又不想增加一個(gè)臟的提交。這時(shí)我想到了 相信git老手們?cè)缇涂闯鰡?wèn)題所在了,修改消失了并不是因?yàn)槲彝吮4?,而?code style="padding:2px 4px; font-family:Menlo,Monaco,'Courier New',monospace; font-size:12px; color:rgb(221,17,68); background-color:rgb(247,247,249); border:1px solid rgb(225,225,232)">git stash在保存完當(dāng)前工作目錄和暫存區(qū)以后,會(huì)用HEAD重置這兩者。因?yàn)槲易蛱斓男薷臎](méi)有提交,HEAD指向的是前天的版本,所以stash以后工作目錄和暫存區(qū)就會(huì)被前天的的版本所重置。
正確的做法應(yīng)該是在
和merge一樣,git stash apply之前要保持當(dāng)前目錄是干凈的(沒(méi)有未提交的改變),否則會(huì)保錯(cuò):
|
|