前幾天講了最基礎的幾個 git 指令,今天來講稍微比較進階的,筆者自己算常用到的指令吧。
暫存 Stash pop、退板(+改指令),在開發上有錯誤,或是想反悔時,都是個好工具!
暫存檔案,需要的時候就取出來用。
聽過一個說法是stash這個指令就像是開一個抽屜,需要的時候把檔案從抽屜中拿出來,不需要的話一直放著也不會怎樣。
apply
Stash + drop
Stash關於 git stash -p 另一種用法可以去看 這篇文章>15. 將檔案加入stash(儲藏) ,在這裡就先不示範。
stash@{0}、stash@{1}...
。git stash
時如果有新增的檔案,要先 git add .
才能操作。git stash pop
後如果有衝突,解衝突後再上傳即可。情境(1)
現在的檔案中有編輯過兩個階段的code,但我想把上傳版本分開;目前已經傳了一版,想要補傳一個版本上去
步驟(1)
情境(2)
改了一些東西才要pull新檔案,遇到衝突時
步驟(2)
接下來會利用GitGraph的線圖來搭配著講解(剛好有專案可以示範stash)
初始狀態
先說明下狀況,我這邊29個改的地方只有一個是修改,其他都是新增
輸入git stash指令,stash之後檔案會變成還沒commit的樣子(我這邊是因為我加了很多檔案但沒add檔案進暫存)
改了一個檔案的內容
改過之後再次stash
我微微改了三次檔案,stash了三次,來做實驗
stash編號順序,由舊到新從 stash@{0} > stash@{1} > stash@{2}….
stash pop 的話,會從新的開始解除,一直回到編號 0,也可以指定要解除哪個 stash
git stash pop stash@{n} 可以指定要解除哪個stashID
stash pop之後, stash@{2} 先被解除了
將過去反悔或是有誤的紀錄清除
退版
git reset --hard HEAD~n
:已經push了,要回去還沒push的狀態git reset HEAD~
:要回去已經commit之前;沒加hard,會回到編輯後還沒commit的時候。有加hard會整個commit不見。回復紀錄,就是git reset --hard HEAD~
後還想重來
git reflog
看git幫你紀錄的 目前操作過的步驟代號commitIDgit reset commitID
HEAD
可以看做目前所在分支
^
代表回到前一次的版本
~
代表上一層
版本
~2
代表上兩層
版本
~n
代表 上n層
以此類推(前一篇的補充)
refloggit reflog
會顯示你操作的每個git步驟。
resetgit reset HEAD
還原檔案狀態
--hardgit reset --hard HEAD~1
還原檔案狀態,並清除在 還原以前 的檔案紀錄
--softgit reset --soft HEAD~1
可以保留
--mixed
Git指令的文章部分到這裡告一個段落,接下來,對於前端工程師菜雞更加重要的JS,會以不同主題的方式登場,擁有良好基礎的JS還是重要的!
stash https://gitbook.tw/chapters/faq/stash
stash -p https://lighter.github.io/2016/07/09/19-tips-for-everyday-git-use/
https://zlargon.gitbooks.io/git-tutorial/content/advanced/stash.html
今天就到這,如有說明不周或錯誤的地方,還請多留言討論(鞠躬)。