Git 分支切換 暫時保存到現在的分支(不進行add),切換到其他分支改東西

問題描述:最近在寫代碼,寫新功能單獨分支dev,突然項目需要改動,切到正常分支master上修改

1.及時commit代碼
在new分支上把已經開發完成的部分代碼commit掉,不push,然後切換到old分支修改代碼,做完了commit,所有分支互不影響,這是一個理想的方法。

 

2.使用git stash
有時候寫了一半的代碼,都還不能編譯通過的,就被叫去改另一個分支的bug了。

在dev分支上的時候在命令行輸入:

git stash
或者

git stash save “修改的信息"
這樣以後你的代碼就回到自己上一個commit了,直接git stash的話git stash的棧會直接給你一個hash值作爲版本的說明,如果用git stash save “修改的信息”,git stash的棧會把你填寫的“修改的信息”作爲版本的說明。

接下來你回到master分支修改代碼完成,你又再回到dev分支,輸入:

git stash pop
或者

git stash list
git stash apply stash@{0}
就可以回到保存的版本了。git stash pop的作用是將git stash棧中最後一個版本取出來,git stash apply stash@{0}的作用是可以指定棧中的一個版本,通過git stash list可以看到所有的版本信息:

stash@{0}: On order-master-bugfix: 22222
stash@{1}: On order-master-bugfix: 22222
然後你可以選擇一個你需要的版本執行:

git stash apply stash@{0}
這時候你擱置的代碼就回來了。

這是一個非常常用的場景,我正在一個分支上修改功能,然後遇到一個bug需要解決,我得切換到其他分支來修改這個bug,但是目前的功能還在開發階段,還不成熟,還不想執行add和commit,執行這兩個後就會在歷史中有記錄,並不想這樣做,於是就有了git stash功能,把我當前的修改暫時保存起來,然後回來的時候再取出來繼續開發功能.

git stash是針對整個git工程來進行保存的,也就是說區分不了branch.比如我在a分支git stash save "sss"暫存了一個修改,那麼我切換到b分支,我使用git stash pop 就能把在a分支保存的"sss"這個修改同步到了b分支上.所以當我們需要在不同的分支上取出不同的分支上保存的修改,那麼就用到了git stash list,這個命令可以把在所有分支上暫存的信息顯示出來,然後我們通過 git stash apply stash@{0} 來選擇恢復哪個暫存,stash@{0}這個會在list中列出來.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章