Git進(jìn)階-解決沖突文件
問題說明:
本地分支:master&active
修改代碼分支:master
需合并代碼分支:active
遇到的問題:在master分支上將代碼commit之后,想要切換至active分支,報(bào)當(dāng)前有沖突文件,必須解決沖突之后才可以切換(因?yàn)橹扒袚Q分支,代碼會(huì)直接進(jìn)行merge,所以就想著直接切換分支去merge就好,但是有錯(cuò)誤提示了)
執(zhí)行merge之前的操作步驟
1.查看當(dāng)前狀態(tài)
$git status? ?結(jié)果:有文件改動(dòng),需要提交文件
2.添加文件并commit
$git add -A
$ git commit -m "update fail cases"
3.查看日志
$git log? 執(zhí)行結(jié)果:可以看到自己提交過的最新記錄
4.切換分支(想著會(huì)直接merge,就直接切換分支)
$git co active? 執(zhí)行結(jié)果:部分merge完成,部分有有沖突還是有什么問題,總之沒有切換成功
tip:從第5步開始就是在嘗試解決問題,是未知的
5.親自merge文件
$git merge active 執(zhí)行結(jié)果:當(dāng)然和上面4執(zhí)行結(jié)果一致(這時(shí)候master已經(jīng)顯示為:MERGING:表示正在merging狀態(tài))
心情描述:自己還是小白,不太敢亂操作,所以內(nèi)心戲如下:
想法1:撤銷merge,我不進(jìn)行合并了,回到未merge之前狀態(tài)(我慫)
想法2:怎么解決這些沖突,如何merge完成呢?
然后請教了百度和開發(fā)師傅,有了下文:
想法1的方案:
1.撤銷merge
$git?reset?--hard?HEAD
2.解決沖突文件
如果沒有代碼比對工具,只能自己去代碼文件里面比對了,因?yàn)橐呀?jīng)在merging狀態(tài),git已經(jīng)將文件有沖突的地方標(biāo)注出來,去查看代碼里面會(huì)看到下面三個(gè)標(biāo)志
①<<<<<<<HEAD
②=======
③>>>>>>>master
通過百度查看說:在①和②中間的是表示修改后的文件,②和③表示修改前的文件,
解決辦法:不管是修改后還是修改前,如果是你自己修改的(如果涉及多人合作的話,就需要溝通一下了),那么你應(yīng)該知道哪個(gè)是想要保留的,把需要保留的保留,需要?jiǎng)h除的刪除,并同時(shí)刪除以上三個(gè)標(biāo)記,然后重新保存,保存完了之后,就要當(dāng)做新修改文件對待了,從上面的第二步:git add -A開始重新來一遍,就可以merge了,然后也可以切換分支了
后續(xù):其實(shí)最開始不應(yīng)該在master分支修改的,但是因?yàn)樵趕ublime打開文件的時(shí)候,是從文件夾選擇,然后打開,但是不管是master分支還是active分支,在sublime打開文件夾的時(shí)候沒有標(biāo)識,不知道打開的到底是哪個(gè)分支下的文件,所以就認(rèn)為是master,然后每次運(yùn)行也是在master下運(yùn)行的用例,然后今天問了開發(fā)小哥哥,問怎么辦?解答是在命令行切換至想要打開的分支,然后在sublime打開。但是還沒有嘗試,還不知道是不是,待下次驗(yàn)證!