Git系列之衝突詳解

Git Bash操作不僅高端大氣上檔次,而且也是一個開發人員必備技能之一。然而git版本控制中衝突的解決,是每個開發人員修煉的必經之路。本文用通俗易懂的語言介紹了git衝突產生的原因及處理方法

工具/原料

windows 64位
git 2.17.1

方法/步驟

1.衝突產生的原因

針對某個合併操作,HEAD倉庫中被修改過的部分與工作目錄中將被合併的修改部分為同一代碼片段,此時git不知如何取捨,便會產生衝突.

2.演示衝突的產生

從某個A狀態出發,我們修改index.html和test.html,並將其保存至暫存區,此時本地代碼會恢復至A點。如圖(1)所示。

我們再次修改index.html的同一代碼片段,並將其提交至HEAD倉庫。如圖(2)所示。

此時若要取出暫存區內容,就會產生衝突,具體表現如圖(3)所示。

【注意下圖行為: index.html出現了衝突,將HEAD倉庫代碼和暫存區代碼都合併到了工作目錄,但text.txt並沒有衝突,而是直接從暫存區取出至緩存區】

3.衝突解決的原理

人為處理衝突,根據具體業務邏輯,判斷代碼的取捨,然後提交修改後的代碼。

4.演示衝突的解決

衝突文件中衝突區域如圖(4)所示。

我們調整衝突後,如圖(5)所示。

【注意:解決衝突只要刪除衝突標識即可,具體內容根據具體業務取捨,下面我們假如只保留已經提交至HEAD倉庫的內容】

然後將處理後的文件加入緩存區,此時你會發現index.html會被自動添加至HEAD倉庫,而text.txt還在緩存區,需要我們手動提交。如圖(6)所示。

至此,衝突解決完畢

本文內容整理自網絡, 文中所有觀點看法不代表淘大白的立場