git stash的正確用法詳解
概述
前段時(shí)間突然發(fā)現(xiàn),我之前對(duì)git stash的使用都是錯(cuò)誤的。
具體說來,我是這么使用的:在遠(yuǎn)端有新的提交,需要git pull來拉取合并時(shí),發(fā)現(xiàn)本地有一些未提交的修改,功能也沒實(shí)現(xiàn),不適合做一次commit。這時(shí)候我執(zhí)行git stash隱藏本地的修改,然后執(zhí)行git pull來拉取遠(yuǎn)端的更新,在最新代碼基礎(chǔ)上重新實(shí)現(xiàn)stash的那些代碼中的功能。
這里的問題是,重新實(shí)現(xiàn)stash代碼中的那一步,其實(shí)完全可以用git stash pop來替代,執(zhí)行這個(gè)命令會(huì)在最新代碼基礎(chǔ)上作用stash的代碼,不用再重新實(shí)現(xiàn)一遍了(不過這時(shí)可能會(huì)有代碼沖突需要解決)。所以我之前是把git stash當(dāng)git checkout -- .來用了,也就是拋棄了本地的代碼更新,顯然是有問題的。
正確流程基本上是這樣:
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的文件也隱藏起來。
你可以創(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 來去除以及應(yīng)用的stash。 git stash pop效果等于git stash apply + git stash drop。
git stash branch會(huì)基于老的提交代碼創(chuàng)建一個(gè)分支,同時(shí)把最新的修改也作用過去,這樣對(duì)于新的提交和老提交代碼變化很大的場(chǎng)景比較好,避免在新的提交上apply stash時(shí)由于沖突太多造成的合并問題。
git stash clean 會(huì)清空所有的stash,且沒有任何提示,這意味著你所有隱藏的代碼都會(huì)被刪除,執(zhí)行此命令前請(qǐng)三思!
以上就是git stash的正確用法詳解的詳細(xì)內(nèi)容,更多關(guān)于git stash用法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解scratch3.0二次開發(fā)之scratch-blocks中的blocks的類型、定義和使用方法
scratch-blocks是scratch-gui依賴的一個(gè)基本模塊,blocks的作用是通過拖曳的方法組成blocks堆塊,今天通過本文給大家分享scratch3.0二次開發(fā)之scratch-blocks的免編譯修改方法,感興趣的朋友一起看看吧2021-08-08
win7/win10+vs2015+pcl1.8.0配置方案詳解
這篇文章主要介紹了win7/win10+vs2015+pcl1.8.0詳細(xì)配置方案,本文通過圖文并茂的形式給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
git中實(shí)現(xiàn)修改提交信息(版本號(hào))
本文介紹了如何修改Git中的提交信息,包括修改最近一次提交和任意提交的信息,首先,使用git commit --amend命令可以快速修改最近一次的提交信息,此外,若需修改任意提交,可以通過啟動(dòng)交互式變基,使用reword選項(xiàng)重新編輯提交信息2024-10-10
PostMan接口測(cè)試用例自動(dòng)轉(zhuǎn)成Python的測(cè)試腳本
PosMan做服務(wù)端的自動(dòng)化測(cè)試中,我們可以把Collection里面的測(cè)試用例導(dǎo)入出來,它是JSON的文件,然后我們解析這些JSON文件,讓它自動(dòng)的轉(zhuǎn)成Python測(cè)試代碼,實(shí)現(xiàn)了PostMan里面的接口測(cè)試用例自動(dòng)的轉(zhuǎn)成了Python的測(cè)試腳本,而且?guī)Я藬嘌?/div> 2024-06-06
基于prompt?tuning?v2訓(xùn)練好一個(gè)垂直領(lǐng)域的chatglm-6b
這篇文章主要為大家介紹了基于prompt?tuning?v2訓(xùn)練好一個(gè)垂直領(lǐng)域的chatglm-6b的過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04最新評(píng)論

