IDEA Git Stash 使用詳解
隨著公司開發人員的增加,以及多需求的並行開發,功能上線就會礙手礙腳;害怕自己沒寫完的程式碼被別人部署到線上,害怕別人程式碼沒寫完被自己部署到線上;總之功能上線之前還要和所有開發溝通,能不能部署程式碼?如果只是幾個人的團隊倒也無妨,但是開發人員多了,溝通成本就很高了。於是 Git 的分支就發揮它的作用了,本文講解工作中使用 IDEA 進行分支的管理以及合併,以及其他 Git 使用技巧。
環境準備
為了演示,先用 IDEA 建立一個簡單工程,提交到 git 遠端倉庫當中。
dev-100 分支建立
現在接到了一個編號為 100 的需求,我們在 master 基礎上,建立 dev-100 分支
建立新分支 dev-100的同時,並切換到 dev-100 分支。
dev-100 分支程式碼開發
在 dev-100 分支編寫需求編號為 100 的 功能,程式碼完成後進行 commit
以及 push
(如果這個分支只有你一個人在開發的話,就不用 push
到遠端分支了,只需要 commit
即可)
分支合併
現在我們要把 dev-100 分支上的程式碼合併到 master 主分支上
先切換到 master 分支
合併 dev-100 分支到 master 分支之前,建議先對 master 程式碼進行 pull 更新操作,然後再執行 Merge into Current
如果沒有衝突,dev-100 中的程式碼就會被合併到 master 分支上了,合併成功後,需要 push
取消分支合併
合併完成後,但是由於一些問題,我們想要取消本次合併,右鍵 git,選擇 Reset HEAD
HEAD^ 是還原到上一個版本,HEAD^^ 是還原到上上一個版本。
Reset Type 有三種:
- mixed 預設方式,只保留原始碼,回退commit和index資訊
- soft 回退到某個版本,只回退了commit的資訊,不會恢復到index file一級。如果還要提交,直接commit
- hard 徹底回退,本地原始碼也會變成上一個版本內容
一般使用預設的 mixed 或者粗暴的 hard 方式。
我們這裡是取消合併,所以選擇 Hard
方式,並且是HEAD^
解決合併衝突問題
接下來演示合併衝突,此時是在 master 分支,我們修改檔案,並 commit 以及 push 到遠端倉庫。
此時再把 dev-100 分支合併到 master 分支就會提示衝突。
雙擊衝突檔案,處理衝突。
處理完成後,點選 apply 即可,如果有多個衝突檔案,都按照這種方式處理,這是我們處理完衝突之後的程式碼。
dev-100 分支已經被成功合併到 master 了,就可以刪除了。可以直接刪除遠端 dev-100 分支,刪除時 IDEA 會提示是否同時刪除本地的 dev-100 分支,勾選即可。
現在我們把分支合併的結果 push 到遠端倉庫。
程式碼暫存之git stash
編號 100 的需求完成之後,現在我們又接到一個新的需求,正在 dev-101 分支進行開發,開發還未完成。
突然線上出現 bug,需要我們緊急進行修改,於是我們要基於最新的 master 分支新建一個 bug 分支 bug-12,需要先切換到 master 分支,但是當前分支的程式碼沒有commit, 如果直接切換到 master 分支的話,dev-101 分支上的新增程式碼就會跑到 master 分支,而程式碼又不能此時 commit ,於是就輪到 stash 出場了。
Stash 會儲存當前工作進度,會把暫存區和工作區的改動儲存起來。
新增備註,選擇 CREATE STASH。你會發現當前工作區內的程式碼被恢復成了原樣。
程式碼暫存還原
此刻切換到 master 分支,並建立 bug-12 分支進行修復 bug,修復完成後合併到 master 分支並 push 到遠端倉庫,上文已經演示如何合併,在此不再贅述。
將 bug-12 與 master 合併完成之後,現在要接著寫 dev-101 需求程式碼,首先先切換到 dev-101 分支;
但是之前的程式碼已經被我們放到了 git 的 stash 當中,我們現在要把程式碼還原到工作區當中。
選擇 Unstash Changes
選擇之前儲存的,同時勾選 Pop stash(還原完成後,會自動刪除這個 stash),確定後,工作區之前寫的程式碼就又回來了。
結語
Stash 利用好了,就可以自如切換分支,面對突如其來的需求也不必煩惱了~
到此這篇關於IDEA Git Stash 使用詳解的文章就介紹到這了,更多相關IDEA Git Stash 使用內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!