問題
在使用git pull
命令更新代碼時(shí)遇到了如下報(bào)錯(cuò):
error: Your local changes to the following files would be overwritten by merge: xxx/xxx.java Please, commit your changes or stash them before you can merge.
出現(xiàn)上述報(bào)錯(cuò)的原因是因?yàn)槠渌诵薷牧藊xx.java文件并提交到了版本庫,而我們本地也修改了xxx.java文件,這時(shí)進(jìn)行pull自然就會(huì)產(chǎn)生沖突坡疼。
解決方案
執(zhí)行git stash
(IDEA中的菜單為Stash Changes
)命令將工作區(qū)恢復(fù)到上次提交的內(nèi)容沪袭,同時(shí)將本地所做的修改備份到暫存區(qū),這樣整個(gè)項(xiàng)目就回到了我們修改之前的狀態(tài)胎撇,這時(shí)就可以正常git pull
了,git pull
完成后,執(zhí)行git stash pop
(IDEA中的菜單為Unstash Changes
)命令將之前本地做的修改應(yīng)用到當(dāng)前工作區(qū)玄帕。
相關(guān)命令
git stash
備份當(dāng)前的工作區(qū)的內(nèi)容,從最近的一次提交中讀取相關(guān)內(nèi)容想邦,讓工作區(qū)保證和上次提交的內(nèi)容一致裤纹。同時(shí),將當(dāng)前的工作區(qū)內(nèi)容保存到暫存區(qū)中丧没。
git pull
拉取服務(wù)器上的代碼到本地鹰椒。
git stash pop
從暫存區(qū)讀取最近一次保存的內(nèi)容,恢復(fù)工作區(qū)的相關(guān)內(nèi)容呕童。由于可能存在多個(gè)Stash的內(nèi)容漆际,所以用棧來管理,pop會(huì)從最近的一個(gè)stash中讀取內(nèi)容并恢復(fù)夺饲。
git stash list
顯示暫存區(qū)中的所有備份奸汇,可以利用這個(gè)列表來決定從那個(gè)地方恢復(fù)。
git stash clear
清空暫存區(qū)往声。