解決git切換分支導(dǎo)致代碼丟失的問(wèn)題
問(wèn)題背景:
? 因?yàn)楸救耸掷镉泻脦讉€(gè)不同的項(xiàng)目,當(dāng)手里有正在做的項(xiàng)目,卻被臨時(shí)叫去修改另外一個(gè)項(xiàng)目,而此時(shí)又不想把現(xiàn)有的代碼提交,于是就強(qiáng)制切換到了另外一個(gè)分支上。悲劇的事情發(fā)生了,再次切換回來(lái)的時(shí)候發(fā)現(xiàn)之前寫(xiě)的代碼丟失了。
解決方法:
? 本人使用的編程工具為VS Code。一般上述情況下,是無(wú)法進(jìn)行正常切換分支的。因?yàn)間it的工作機(jī)制會(huì)要求盡量保持一個(gè)較為干凈的工作區(qū)和暫存區(qū)。所以就算你成功切換了分支,vscode會(huì)幫你把切換前的代碼執(zhí)行stash
,就是儲(chǔ)藏起來(lái)。當(dāng)你再次切換回來(lái)的時(shí)候,可以從這個(gè)‘’貯藏室‘’里面取出之前存放的代碼
? 執(zhí)行指令git stash list
可以用來(lái)查看目前儲(chǔ)藏室里面已經(jīng)存儲(chǔ)的代碼列表,取出來(lái)也很簡(jiǎn)單。使用指令git stash apply stash@{n}
,其中的n代表的是list列表的前綴,根據(jù)需要恢復(fù)的代碼進(jìn)行變化的。
? 但是此時(shí)需要注意一個(gè)問(wèn)題,就是在powershell中使用該指令,會(huì)出現(xiàn)大括號(hào){}不被識(shí)別的現(xiàn)象。這是因?yàn)榇罄ㄌ?hào)在 PowerShell 中被認(rèn)為是代碼塊執(zhí)行標(biāo)識(shí)符,若想正常使用,可用反引號(hào) ` 進(jìn)行轉(zhuǎn)義。當(dāng)然也可以直接在git bash中使用該指令。
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-508195.html
? 通過(guò)上述的方法,可以成功找回丟失的代碼。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-508195.html
1) 問(wèn)題出現(xiàn)原因:當(dāng)前在A(yíng)分支修改一個(gè)問(wèn)題,修改進(jìn)行到一半,來(lái)了一個(gè)緊急的生產(chǎn)問(wèn)題需要修復(fù),在不提交當(dāng)前分支代碼的情況下,切換到M分支修改緊急需求。修改完畢后,A分支修改的內(nèi)容丟失。
2) 解決:
i. 接到緊急任務(wù)后,在A(yíng)分支使用 git stash 暫存當(dāng)前修改,當(dāng)前代碼會(huì)恢復(fù)到本地最近一次commit
ii. git checkout M 切換到M分支,完成緊急迭代任務(wù)
iii. git checkout A 切回原分支,當(dāng)前代碼一貧如洗
iv. git stash list 查看暫存列表,里面(# list stashed changes in this git )
stash@{0}: xxxxxxxxxxxxxxx;
stash@{1}: yyyyyyyyyyyyyyyyyyyyy;
stash@{2}: zzzzzzzzzzzzzzzzzzzzzzzzz;
stash@{3}: vvvvvvvvvvvvvvvvvvv;
v. 如果沒(méi)有在次中間使用git stash 的話(huà),可以直接看最近的一次暫存git show stash@{0}
vi. 兩種方式取出這條暫存:
i. git stash apply stash@{0} 取出暫存號(hào)為stash@{0}的代碼,對(duì)暫存列表無(wú)影響(# see the last stash )
ii.git stash pop 取出最近的一次暫存,并將其在暫存列表中刪除(apply last stash and remove it from the list)
到了這里,關(guān)于解決git切換分支導(dǎo)致代碼丟失的問(wèn)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!