git stash的正確用法詳解
概述
前段時(shí)間突然發(fā)現(xiàn),我之前對(duì)git stash
的使用都是錯(cuò)誤的。
具體說(shuō)來(lái),我是這么使用的:在遠(yuǎn)端有新的提交,需要git pull
來(lái)拉取合并時(shí),發(fā)現(xiàn)本地有一些未提交的修改,功能也沒(méi)實(shí)現(xiàn),不適合做一次commit。這時(shí)候我執(zhí)行git stash
隱藏本地的修改,然后執(zhí)行git pull
來(lái)拉取遠(yuǎn)端的更新,在最新代碼基礎(chǔ)上重新實(shí)現(xiàn)stash的那些代碼中的功能。
這里的問(wèn)題是,重新實(shí)現(xiàn)stash代碼中的那一步,其實(shí)完全可以用git stash pop
來(lái)替代,執(zhí)行這個(gè)命令會(huì)在最新代碼基礎(chǔ)上作用stash的代碼,不用再重新實(shí)現(xiàn)一遍了(不過(guò)這時(shí)可能會(huì)有代碼沖突需要解決)。所以我之前是把git stash
當(dāng)git checkout -- .
來(lái)用了,也就是拋棄了本地的代碼更新,顯然是有問(wèn)題的。
正確流程基本上是這樣:
git stash # 或者 git stash push,效果一樣 git pull # 可能有沖突需要手動(dòng)合并 git stash pop # 可能有沖突需要手動(dòng)合并
下面記錄一下 git stash 提供的功能和一些參數(shù)。
git stash 具體用法
git stash
創(chuàng)建一個(gè)新的stash,效果與git stash push
一樣,效果如下:
$ git stash Saved working directory and index state WIP on master: c6771a5 doc: fix error during pre-commiting
增加-u
選項(xiàng)可以將未track的文件也隱藏起來(lái)。
你可以創(chuàng)建多個(gè)stash,最早的stash表示為stash@{0}
,然后是stash@{1}
,依次遞加。
git stash list
會(huì)列出所有的stash:
$ git stash list stash@{0}: WIP on master: c6771a5 doc: fix error during pre-commiting stash@{1}: WIP on master: c6771a5 doc: fix error during pre-commiting
git stash show
可以查看最新stash中的修改,加上編號(hào)可以查看之前版本的修改。
$ git stash show stash@{0} version.txt | 1 + 1 file changed, 1 insertion(+)
git stash apply
可以應(yīng)用最新的stash到當(dāng)前的代碼中,同樣的,如果加上編號(hào)則可以應(yīng)用之前版本的修改到當(dāng)前代碼。apply執(zhí)行后記得調(diào)用git stash drop
來(lái)去除以及應(yīng)用的stash。 git stash pop
效果等于git stash apply
+ git stash drop
。
git stash branch
會(huì)基于老的提交代碼創(chuàng)建一個(gè)分支,同時(shí)把最新的修改也作用過(guò)去,這樣對(duì)于新的提交和老提交代碼變化很大的場(chǎng)景比較好,避免在新的提交上apply stash時(shí)由于沖突太多造成的合并問(wèn)題。
git stash clean
會(huì)清空所有的stash,且沒(méi)有任何提示,這意味著你所有隱藏的代碼都會(huì)被刪除,執(zhí)行此命令前請(qǐng)三思!
以上就是git stash的正確用法詳解的詳細(xì)內(nèi)容,更多關(guān)于git stash用法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
快速解決eclipse中注釋的代碼依然會(huì)執(zhí)行的問(wèn)題
下面小編就為大家?guī)?lái)一篇快速解決eclipse中注釋的代碼依然會(huì)執(zhí)行的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12WebSocket部署到服務(wù)器出現(xiàn)連接失敗問(wèn)題的分析與解決
這篇文章主要給大家介紹了關(guān)于WebSocket部署到服務(wù)器出現(xiàn)連接失敗問(wèn)題的分析與解決方法,文中給出了詳細(xì)的介紹供大家參考學(xué)習(xí),文末也給出了demo下載地址,需要的朋友們可以下載學(xué)習(xí),下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10解析在瀏覽器地址欄輸入一個(gè)URL后發(fā)生了什么
作為一個(gè)軟件開(kāi)發(fā)者,你一定會(huì)對(duì)網(wǎng)絡(luò)應(yīng)用如何工作有一個(gè)完整的層次化的認(rèn)知,同樣這里也包括這些應(yīng)用所用到的技術(shù):像瀏覽器,HTTP,HTML,網(wǎng)絡(luò)服務(wù)器,需求處理等等。本文將更深入的研究當(dāng)你輸入一個(gè)網(wǎng)址的時(shí)候,后臺(tái)到底發(fā)生了一件件什么樣的事2021-06-06教你使用Typora?+?阿里云OSS?+?PicGo?搭建私人圖床(最新)
這篇文章主要介紹了教你使用Typora?+?阿里云OSS?+?PicGo?搭建私人圖床,我這里使用的是阿里云對(duì)象存儲(chǔ)OSS,你可以使用騰訊、七牛云對(duì)象存儲(chǔ)等皆可,需要的朋友可以參考下2022-04-04各類(lèi)常見(jiàn)語(yǔ)言清除網(wǎng)頁(yè)緩存方法匯總
這篇文章主要介紹了各類(lèi)常見(jiàn)語(yǔ)言清除網(wǎng)頁(yè)緩存方法匯總,包括了常見(jiàn)的html、asp、php與java,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10