雖然在團(tuán)隊(duì)協(xié)作開發(fā)中強(qiáng)調(diào)盡量避免操作同一文件,以避免沖突,但是在實(shí)際開發(fā)中還是會(huì)遇到?jīng)_突,所以掌握解決沖突的方法必不可少。
1 解決沖突就要先制造沖突廓块,沖突一般是由于兩個(gè)人同時(shí)修改同一文件而造成的厢绝。在GitHub上修改遠(yuǎn)程倉庫文件模擬一個(gè)人操作,sourceTree本地修改同一文件模擬另一個(gè)人操作带猴。
1.png
2 登錄GitHub 昔汉,打開GitTest,編輯test1.txt文件
image.png
3 在文件末尾增加 內(nèi)容 code conclick1,點(diǎn)擊提交拴清。如下圖所示靶病。
image.png
image.png
4 打開本地工作副本的test1.txt文件,新增內(nèi)容code conclick2口予,如下圖:
image.png
5 打開sourceTree,可以看到本地工作副本有個(gè)待提交記錄娄周。
image.png
6推送代碼。這個(gè)時(shí)候你修改完了本地的功能沪停,并不知道遠(yuǎn)程倉庫上也有人提交了該文件的修改煤辨。直接推送本地修改裳涛,推送本地工作副本到遠(yuǎn)程倉庫,運(yùn)行完成后會(huì)報(bào)錯(cuò)众辨,大概是提示本地倉庫和遠(yuǎn)程倉庫版本不一致端三,無法提交,但是本地工作副本的修改卻是已經(jīng)提交到了本地倉庫鹃彻。如下圖郊闯。
image.png
image.png
7 既然提示 和遠(yuǎn)程倉庫版本不一致,無法推送蛛株,那只能先拉成一致了团赁。點(diǎn)擊拉取圖標(biāo),等執(zhí)行完泳挥,就會(huì)出現(xiàn)下圖所示然痊。有一個(gè)待拉取的圖標(biāo)和一個(gè)待推送的圖標(biāo),并且test1.txt文件的圖標(biāo)變成了黃色的感嘆號(hào)屉符。這個(gè)時(shí)候文件的沖突就造成了剧浸。
image.png
8 沖突文件會(huì)把兩者的修改以沖突的方式合在一個(gè)文件里,等待使用者去處理矗钟。那么基本的處理思想是:要么使用其中某一個(gè)人的唆香,要么使用兩者的組合。
沖突的解決需要一個(gè)外部代碼對(duì)比工具吨艇,我這里使用的是Beyond Compare 4躬它,大家可以自己百度下載安裝,然后集成到sourceTree軟件中东涡。如下圖冯吓。在外部對(duì)比工具中找到Beyond Compare 4的可執(zhí)行程序,點(diǎn)擊確定疮跑。
image.png
9 下面開始使用代碼對(duì)比工具解決沖突组贺,選中待解決沖突的代碼,右鍵 解決沖突祖娘,打開外部合并工具失尖。
image.png
10 等待一會(huì),Beyond Compare 4就會(huì)被打開渐苏。第一塊是本地修改的版本掀潮,第二塊是沖突兩者(本地倉庫和遠(yuǎn)程倉庫)相同的版本基準(zhǔn),第三塊是 遠(yuǎn)程倉庫的修改琼富。第四塊是沖突處理后的代碼仪吧。
image.png
11 本次解決沖突是為了合并兩者的修改,所以我會(huì)把第一塊和第三塊所做的修改按照正確的邏輯順序鞠眉,合到第四塊邑商。如下圖摄咆,點(diǎn)擊保存。關(guān)閉該對(duì)比軟件人断。
image.png
12 切到sourceTree界面吭从,可以看到多了一個(gè)解決沖突的中間文件,由于沖突已解決恶迈,直接右鍵移除涩金,
image.png
13 可以看到?jīng)_突已解決,代碼已正確合并暇仲。推送該合并步做。
image.png
14 這樣沖突就被解決了,可以看到本地工作副本和遠(yuǎn)程倉庫的代碼都是一致的了奈附。
image.png
image.png