git stash 可用來(lái)暫存當(dāng)前正在進(jìn)行的工作合武, 比如想pull 最新代碼壹粟, 又不想加新commit热押, 或者另外一種情況斗这,為了fix 一個(gè)緊急的bug, 先stash, 使返回到自己上一個(gè)commit, 改完bug之后再stash pop, 繼續(xù)原來(lái)的工作碌补。
基礎(chǔ)命令
git stash
備份當(dāng)前的工作區(qū)的內(nèi)容虏束,從最近的一次提交中讀取相關(guān)內(nèi)容,讓工作區(qū)保證和上次提交的內(nèi)容一致厦章。同時(shí)镇匀,將當(dāng)前的工作區(qū)內(nèi)容保存到Git棧中。
git stash pop
從Git棧中讀取最近一次保存的內(nèi)容袜啃,恢復(fù)工作區(qū)的相關(guān)內(nèi)容汗侵。由于可能存在多個(gè)Stash的內(nèi)容,所以用棧來(lái)管理囊骤,pop會(huì)從最近的一個(gè)stash中讀取內(nèi)容并恢復(fù)晃择。
git stash list
顯示Git棧內(nèi)的所有備份,可以利用這個(gè)列表來(lái)決定從那個(gè)地方恢復(fù)也物。
git stash clear
清空Git棧宫屠。此時(shí)使用gitg等圖形化工具會(huì)發(fā)現(xiàn),原來(lái)stash的哪些節(jié)點(diǎn)都消失了滑蚯。
進(jìn)階
git stash save "work in progress for foo feature"
當(dāng)你多次使用'git stash'命令后浪蹂,你的棧里將充滿了未提交的代碼,這時(shí)候你會(huì)對(duì)將哪個(gè)版本應(yīng)用回來(lái)有些困惑告材,'git stash list' 命令可以將當(dāng)前的Git棧信息打印出來(lái)坤次,你只需要將找到對(duì)應(yīng)的版本號(hào),例如使用'git stash apply stash@{1}'就可以將你指定版本號(hào)為stash@{1}的工作取出來(lái)斥赋,當(dāng)你將所有的棧都應(yīng)用回來(lái)的時(shí)候缰猴,可以使用'git stash clear'來(lái)將棧清空。
git stash # save uncommitted changes
# pull, edit, etc.
git stash list # list stashed changes in this git
git show stash@{0} # see the last stash
git stash pop # apply last stash and remove it from the list
git stash --help # for more info