Git不暫存提交代碼也能切換到別的分支(vs code搭配GitLens Git supercharged看效果)

問(wèn)題描述

假設(shè)有這樣一個(gè)場(chǎng)景需求:

  • 某一天,我們正在自己的開(kāi)發(fā)分支上愉快的寫代碼
  • 突然產(chǎn)品強(qiáng)者找到我們,說(shuō)客戶要求在生產(chǎn)環(huán)境上給首頁(yè)加上一個(gè)陰影,好看一些
  • 要立刻,馬上加!
  • 但是我們自己的開(kāi)發(fā)分支上代碼還沒(méi)有開(kāi)發(fā)完
  • 我們不想去git add ./git commit -m 'xxx'(不想去增加提交記錄)
  • 但是我們?nèi)绻苯忧袚Q到生產(chǎn)分支,當(dāng)下還沒(méi)有寫完的代碼就會(huì)被overwritten(容易丟失當(dāng)下還沒(méi)寫完的代碼)
  • 此時(shí),git stash命令就閃亮登場(chǎng)啦...

操作演示步驟

  • 我們知道Git是命令行代碼工具,用于管理我們的開(kāi)發(fā)代碼
  • 基于這個(gè)底層工具,一些大佬研發(fā)出一些可視化的Git管理插件(如在vscode中使用)
  • 筆者的習(xí)慣是使用命令行Git操作,搭配GitLens — Git supercharged可視化Git插件
  • 下面筆者將在vscode編輯器中,結(jié)合GitLens — Git supercharged插件去演示場(chǎng)景需求

下載GitLens — Git supercharged插件

筆者也推薦大家使用這個(gè)可視化Git工具,雖然不怎么用這個(gè)可視化工具操作代碼,不過(guò)用于看自己提交的代碼操作,還是比較直觀的。

vscode拓展下載

下載成功

演示操作圖解

假設(shè)有兩個(gè)分支,git branch查看一下

我們當(dāng)下在dev分支愉快地寫代碼呢

// 原來(lái)代碼
console.log('我是開(kāi)發(fā)分支')
console.log('我是開(kāi)發(fā)分支')
console.log('我是開(kāi)發(fā)分支')

// 寫了一半,寫成了
console.log('愉快地寫代碼')
console.log('愉快地寫代碼')
console.log('愉快地寫代碼')

當(dāng)我們想要直接切換分支時(shí),git會(huì)有對(duì)應(yīng)錯(cuò)誤警告,因?yàn)榇a還沒(méi)add還沒(méi)commit

error: Your local changes to the following files would be overwritten by checkout:
        home.js
Please commit your changes or stash them before you switch branches.
Aborting
/*
錯(cuò)誤:切換分支時(shí)將覆蓋對(duì)以下文件的本地更改:home.js
請(qǐng)?jiān)谇袚Q分支之前提交更改或?qū)⑵潆[藏。
正在中止
*/ 

大家看到了吧,實(shí)際上Git已經(jīng)對(duì)我們進(jìn)行提示了,不要直接切換分支,否則就給你寫的代碼覆蓋掉。當(dāng)然你可以add commit以后再切換,或者執(zhí)行stash相關(guān)命令將其隱藏。

我們可以執(zhí)行命令git stash save "注釋"將寫了一半的代碼隱藏起來(lái),如下圖:

也可以看STASHES中的詳情

然后可以執(zhí)行git status查看狀態(tài),發(fā)現(xiàn)工作樹(shù)干凈了,可以切換分支了

然后我們git checkout master,進(jìn)行主分支代碼修改,操作完畢以后,再切回dev分支上,再執(zhí)行git stash pop命令,將我們剛剛隱藏在STASHES中的修改代碼再彈出來(lái)即可繼續(xù)愉快地寫代碼啦...,如下圖:

git stash代碼總結(jié)

將未寫完的代碼,隱藏到隱藏區(qū),建議使用第一條,可以加一點(diǎn)注釋,以便于回過(guò)頭來(lái)查看(雖然二者是一個(gè)意思)

  • git stash save "注釋" (保存加注釋隱藏)
  • git stash (保存不加注釋隱藏)

將隱藏區(qū)的代碼取出來(lái),恢復(fù)原樣,建議使用第一條,取出即刪除,不會(huì)產(chǎn)生冗余代碼(相當(dāng)于只有一份,丟進(jìn)去,再拿出來(lái));第二條相當(dāng)于復(fù)制一份拿出來(lái)

  • git stash pop(取出并刪除STASHES中的隱藏內(nèi)容)
  • git stash apply (取出不刪除STASHES中的隱藏內(nèi)容)

再搭配GitLens Git supercharged插件可視化看效果,可以解決99%的代碼未寫完需要切換分支的需求。實(shí)際上git-stash可以命令也是非常多的,上述文章基本夠用了,不夠用的話我們?cè)偃タ垂俜轿臋n

官方文檔地址: https://git-scm.com/docs/git-...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容