IDEA之Git分支以及Stash使用

隨着公司開發人員的增長,以及多需求的並行開發,功能上線就會礙手礙腳;懼怕本身沒寫完的代碼被別人部署到線上,懼怕別人代碼沒寫完被本身部署到線上;總之功能上線以前還要和全部開發溝通,能不能部署代碼?若是隻是幾我的的團隊倒也無妨,可是開發人員多了,溝通成本就很高了。因而 Git 的分支就發揮它的做用了,本文講解工做中使用 IDEA 進行分支的管理以及合併,以及其餘 Git 使用技巧。git

環境準備

爲了演示,先用 IDEA 建立一個簡單工程,提交到 git 遠程倉庫當中。
app

dev-100 分支建立

如今接到了一個編號爲 100 的需求,咱們在 master 基礎上,建立 dev-100 分支
3d

建立新分支 dev-100的同時,並切換到 dev-100 分支。
code

dev-100 分支代碼開發

在 dev-100 分支編寫需求編號爲 100 的 功能,代碼完成後進行 commit 以及 push若是這個分支只有你一我的在開發的話,就不用 push 到遠程分支了,只須要 commit 便可
blog

分支合併

如今咱們要把 dev-100 分支上的代碼合併到 master 主分支上
先切換到 master 分支
開發

合併 dev-100 分支到 master 分支以前,建議先對 master 代碼進行 pull 更新操做,而後再執行 Merge into Current
部署

若是沒有衝突,dev-100 中的代碼就會被合併到 master 分支上了,合併成功後,須要 push 才能推送到遠程倉庫
源碼

取消分支合併

合併完成後,可是因爲一些問題,咱們想要取消本次合併,右鍵 git,選擇 Reset HEAD

it

HEAD^ 是還原到上一個版本,HEAD^^ 是還原到上上一個版本。
Reset Type 有三種:ast

  • mixed 默認方式,只保留源碼,回退commit和index信息
  • soft 回退到某個版本,只回退了commit的信息,不會恢復到index file一級。若是還要提交,直接commit
  • hard 完全回退,本地源碼也會變成上一個版本內容

通常使用默認的 mixed 或者粗暴的 hard 方式。
咱們這裏是取消合併,因此選擇 Hard 方式,而且是HEAD^還原到上一個版本,回退後恢復了原來 master 的代碼。

解決合併衝突問題

接下來演示合併衝突,此時是在 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 利用好了,就能夠自如切換分支,面對突如其來的需求也沒必要煩惱了~

相關文章
相關標籤/搜索