想要獲取更多文章可以訪問(wèn)我的博客 - 代碼無(wú)止境。
在開發(fā)的過(guò)程中可能會(huì)經(jīng)常出現(xiàn)下面這種情況漫仆,我們正在開發(fā)某個(gè)功能夕玩,當(dāng)前分支的內(nèi)容比較亂,不太適合提交假颇,而此時(shí)我們需要切換到其他分支上處理一些事情胚鸯。這個(gè)時(shí)候該怎么辦呢?難道是將修改先備份然后丟棄修改再切換到另外的分支上笨鸡?答案肯定是否定的姜钳,今天我們就來(lái)介紹如何使用git stash
命令來(lái)完美解決這種窘境坦冠。
準(zhǔn)備
首先我們需要準(zhǔn)備一個(gè)git倉(cāng)庫(kù),并準(zhǔn)備兩個(gè)分支(master
和dev
):
mkdir git-test
cd git-test
git init
touch README.md
git add README.md
git commit -m "第一次提交"
git checkout -b dev
使用stash命令
在上一步哥桥,我們已經(jīng)切換到dev
了辙浑,現(xiàn)在我們?cè)?code>README.md上隨便修改一點(diǎn)東西來(lái)模擬凌亂的分支:
$ git status
On branch dev
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: README.md
no changes added to commit (use "git add" and/or "git commit -a")
現(xiàn)在假如我們急需切換到master
分支上處理一些事情,所以我們需要使用git stash
來(lái)藏儲(chǔ)dev
分支上的修改拟糕。
git stash
然后我們?cè)賵?zhí)行一下git status來(lái)看下dev上的情況:
$ git status
On branch dev
nothing to commit, working tree clean
我們會(huì)發(fā)現(xiàn)dev
分支變干干凈凈了判呕,因?yàn)閯倓偟男薷囊呀?jīng)被藏儲(chǔ)了。那么或許你會(huì)問(wèn)送滞,我們應(yīng)該怎么查看有哪些藏儲(chǔ)呢侠草?當(dāng)我們?cè)?code>master分支上處理完事情后回到dev
分支又該如何恢復(fù)我們藏儲(chǔ)的內(nèi)容呢?首先我們執(zhí)行git stash list
我們查看所有的藏儲(chǔ)記錄:
$ git stash list
stash@{0}: WIP on dev: 9ad7304 第一次提交
如何恢復(fù)呢犁嗅?可以使用git stash pop
恢復(fù)第一條存儲(chǔ)記錄边涕,也可以使用git stash apply stash@{n}
命令來(lái)恢復(fù)指定的存儲(chǔ)記錄。
$ git stash apply stash@{0}
On branch dev
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: README.md
然后我們就會(huì)發(fā)現(xiàn)剛剛的修改恢復(fù)回來(lái)了褂微。但是此時(shí)我們?cè)俅螆?zhí)行git stash list
會(huì)發(fā)現(xiàn)剛剛恢復(fù)的藏儲(chǔ)記錄還存在功蜓,我們需要執(zhí)行git stash drop stash@{n}
刪掉它。
$ git stash drop stash@{0}
Dropped stash@{0} (8c0b9fa5bc217c7876ab825147ee76712364887e)
再執(zhí)行git stash list
的時(shí)候就會(huì)發(fā)現(xiàn)這條藏儲(chǔ)被刪除了宠蚂,當(dāng)然如果我們恢復(fù)的是棧頂?shù)牟貎?chǔ)記錄的話我建議直接使用git stash pop
命令式撼,因?yàn)樵诨謴?fù)的同時(shí)會(huì)自動(dòng)刪除掉棧頂?shù)牟貎?chǔ)記錄。