問(wèn)題
- 當(dāng)本地代碼和遠(yuǎn)程代碼有沖突的時(shí)候囤捻,執(zhí)行g(shù)it pull操作的時(shí)候,會(huì)提示有沖突,然后直接終止本次pull.
解決思路
- 可以先將本地內(nèi)容stash到倉(cāng)庫(kù)中肢专,執(zhí)行stash操作后本姥,本地代碼將返回到修改前的內(nèi)容肩袍。
- 這時(shí),就可以正常將遠(yuǎn)程代碼下載到本地了扣草。
- 然后再通過(guò)stash操作將倉(cāng)庫(kù)中的內(nèi)容合到本地了牛,如果有沖突就可以進(jìn)行解決了。
git stash命令主要用于以下情形:
經(jīng)常有這樣的事情發(fā)生辰妙,當(dāng)你正在進(jìn)行項(xiàng)目中某一部分的工作鹰祸,里面的東西處于一個(gè)比較雜亂的狀態(tài),而你想轉(zhuǎn)到其他分支上進(jìn)行一些工作密浑。問(wèn)題是蛙婴,你不想提交進(jìn)行了一半的工作,否則以后你無(wú)法回到這個(gè)工作點(diǎn)尔破。解決這個(gè)問(wèn)題的辦法就是git stash命令街图。儲(chǔ)藏(stash)可以獲取你工作目錄的中間狀態(tài)——也就是你修改過(guò)的被追蹤的文件和暫存的變更——并將它保存到一個(gè)未完結(jié)變更的堆棧中,隨時(shí)可以重新應(yīng)用懒构。
使用git的時(shí)候餐济,我們往往使用分支(branch)解決任務(wù)切換問(wèn)題,例如胆剧,我們往往會(huì)建一個(gè)自己的分支去修改和調(diào)試代碼, 如果別人或者自己發(fā)現(xiàn)原有的分支上有個(gè)不得不修改的bug絮姆,我們往往會(huì)把完成一半的代碼commit提交到本地倉(cāng)庫(kù),然后切換分支去修改bug秩霍,改好之后再切換回來(lái)篙悯。這樣的話往往log上會(huì)有大量不必要的記錄。其實(shí)如果我們不想提交完成一半或者不完善的代碼铃绒,但是卻不得不去修改一個(gè)緊急Bug鸽照,那么使用git stash就可以將你當(dāng)前未提交到本地(和服務(wù)器)的代碼推入到Git的棧中,這時(shí)候你的工作區(qū)間和上一次提交的內(nèi)容是完全一樣的颠悬,所以你可以放心的修Bug矮燎,等到修完Bug定血,提交到服務(wù)器上后,再使用git stash apply將以前一半的工作應(yīng)用回來(lái)漏峰。
操作命令
- git stash 將本地代碼stash到倉(cāng)庫(kù)中糠悼。{可以使用git stash save *** 定義自己的標(biāo)記,方便以后查詢}
- git pull 將遠(yuǎn)程代碼拉取到本地浅乔。
- git stash show 顯示stash合并到本地代碼后倔喂,哪些文件會(huì)修改,以及修改的概述
- git stash pop 將倉(cāng)庫(kù)中的代碼合到本地最新代碼中靖苇。
- git stash pop默認(rèn)將最近一次stash操作合并到本地代碼中席噩,也可以通過(guò)git stash pop stash@{Number}指定將某次stash的內(nèi)容合并到本地代碼中。
- 在處理bug的過(guò)程中贤壁,可能存在多次stash的操作悼枢。這時(shí)可以使用git stash list查看本地倉(cāng)庫(kù)中都存儲(chǔ)了幾個(gè)stash版本。
- git stash pop命令在合并代碼的同時(shí)脾拆,會(huì)把倉(cāng)庫(kù)中對(duì)應(yīng)的內(nèi)容彈出馒索。如果只想查看,而不想彈出內(nèi)容名船,可以使用git stash apply命令進(jìn)行操作绰上。
- git stash -h 查看git stash幫助