git stash 的兩種應用場景


最近git用的比較多,因為是實驗室多個人維護一個倉庫,經常會有合並沖突的情況,就學習了一下git stash的用法,目前有兩個場景非常常用:

1. 有人與我改動同一分支

  我在本地修改好后,發現遠程分支已經被改動了,此時我本地也被改動了就造成了沖突,無法push或者pull。

  此時可以使用git stash:

1 git stash //把本地的改動暫存起來
2 git pull  //拉取遠端分支(此時本地分支會回滾到上次commit的情況,新的改動都存在了stash中)
3 git stash pop // 將棧頂改動重新加回本地分支,就可以繼續修改了,當然,如果改好了就是add,commit,push啥的。。

2. 不小心改動了其他分支,例如忘記切換,直接在master分支上做改動,這里假設我的分支是test分支

git stash          //把本地當前改動暫存起來,此時master分支就恢復到了上次拉取時的狀態
git checkout test  //切換到需要改動的分支
git stash pop    //將改動pop到自己當前的分支

 

小結以及一些擴展:

顧名思義,stash就是一個棧,平時我們把需要暫存的文件存到棧中,把代碼恢復到上次拉取的狀態以進行操作,而git stash pop 就是讓棧頂元素出棧並刪除

git stash apply 則是只取棧頂元素,但是不刪除

這樣會有一個顯而易見后果,如果我再次執行git stash,新的改動將會出現在棧頂,棧中元素會越來越多,此時可以使用 git stash list 命令查看棧中元素,此時每個棧中元素會有自己對應的編號

使用git stash apply stash@{0} (0可以換成對應編號),來添加不同改動。同樣,你也可以 git stash drop stash@{0} 來刪除對應改動

git stash clear 可以清空 stash list

 

就我個人而言,git stash pop就已經滿足日常需要了,所以我的stash list里日常只有編號0 和空

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM