VSCode中的代碼合并操作
前言:
VSCode是一個(gè)常用的編輯器(微軟的東西,不用介紹了),Git是一個(gè)開源的版本管理工具(全球最大的github代碼托管平臺(tái)就基于git搭建,開源操作系統(tǒng)LInux采用git進(jìn)行版本管理)。由于網(wǎng)上的有效資料相當(dāng)少,就出一篇專欄
背景:
目前有一個(gè)git管理的倉庫,倉庫中有一個(gè)文件:shoppinglist.txt,文件內(nèi)容為:
項(xiàng)目經(jīng)歷的歷史,使用git log命令查看:
項(xiàng)目的歷史如下:
正文
現(xiàn)在將berries分支合并到master分支:
顯然,分支合并是會(huì)出現(xiàn)沖突的:
我們用VSCode打開項(xiàng)目所在文件夾

我們自然希望兩個(gè)分支的內(nèi)容都能保留下來,重復(fù)部分(watermelon)可以刪除。這時(shí)有2種處理方案(注意這是兩種不同的解決方案,請(qǐng)不要混合使用!):
手動(dòng)解決
合并解析器中解決

手動(dòng)解決
點(diǎn)擊保留雙方更改,刪除watermelon,保存文件

好了,現(xiàn)在我們確定已經(jīng)解決了沖突了。雖然,VSCode那個(gè)`在合并編輯器中解析`按鈕還沒有消失,并且它提示我們文件還處于有沖突的狀態(tài)。。。請(qǐng)不要點(diǎn)擊`在合并編輯器中解析`(UP主強(qiáng)烈建議,當(dāng)然如果你感興趣點(diǎn)擊了會(huì)發(fā)生什么,可以試試),我們現(xiàn)在確實(shí)已經(jīng)完成解決了沖突了。這時(shí)我們直接暫存文件:
可以看到VSCode那個(gè)`在合并編輯器中解析`按鈕已經(jīng)消失,并且文件處于暫存狀態(tài)。我們成功解決了沖突,可以直接提交了。

合并解析器中解決
我們注意到VSCode那個(gè)`在合并編輯器中解析`按鈕,還是很令人在意。這里我們嘗試直接點(diǎn)擊這個(gè)按鈕。讓我們先回到開始時(shí)的狀態(tài):
多提一下,git reset --hard e2dcb85 這個(gè)命令的 hash 值,是我們專欄 [背景] 中的一個(gè)命令
可以查看的。
重新合并分支
不出意料的出現(xiàn)沖突
這次我們點(diǎn)擊一下`在合并編輯器中解析`按鈕

啊這,突然多開了一個(gè)標(biāo)簽頁,彈出三個(gè)窗口:傳入,當(dāng)前,結(jié)果
不慌,傳入窗口顯示它是berries分支的內(nèi)容,當(dāng)前窗口顯示它是master分支的內(nèi)容,而結(jié)果窗口顯然是我們合并完成后的內(nèi)容,結(jié)果窗口顯示剩余1個(gè)沖突。
傳入和當(dāng)前窗口的高亮部分,出現(xiàn)了我們熟悉的幾個(gè)選項(xiàng):接受傳入 | 接受組合 | 忽略
我們現(xiàn)在要合并,并不希望忽略,都選擇接受

我們發(fā)現(xiàn),合并編輯器已經(jīng)幫我們完成合并了,這時(shí)我們可以直接點(diǎn)擊完成合并。然后再提交分支。但是,等等,如果合并編輯器的結(jié)果,我們并不滿意怎么辦?我們嘗試修改內(nèi)容,將apricot移到berries的前面

編輯合并結(jié)果,合并編輯器依舊認(rèn)為我們完成了合并。好了,可以放心的點(diǎn)擊完成合并了。

合并完成,可以提交分支了。VSCode自動(dòng)出現(xiàn)了一個(gè)提交按鈕。我們當(dāng)然可以直接點(diǎn)擊按鈕提交,也可以編譯提交信息。但是,等等,我們先看看現(xiàn)在是什么狀態(tài)
可以看到,我們處于已暫存,未提交狀態(tài)
好了,我們并不喜歡VSCode的圖形化界面,它很多時(shí)候非常的慢,而命令行總是有著出色的執(zhí)行效率。我們可以提交代碼了
看一下我們的操作成果
附錄
參考鏈接:
https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts