目錄
前言
如果你要在linux下解決git代碼的衝突,因爲很麻煩,而且很費時。
本文不推薦在linux環境下解決衝突,如果你硬要在linux下,推薦命令
find . -name "*.java" | xargs grep "<<<".
find後面跟着點代表當前路徑,你可以根據的實際要求去配置不同的路徑地址。
git 正常操作
上傳本地代碼
git pull
git add .
git commit -m "我要上傳代碼啦"
git push
git合併分支
--當前分支是master
git checkout master
--把vivichou中的內容Merge進來:
git merge vivichou
衝突場景——分支狀態變爲merging
- 當git pull代碼後,進行git add 並試圖push時
- git merge分支的時候
出現衝突時,代碼裏會加上很多奇怪的符號,解釋如下:
<<<<<<< HEAD
本地代碼
=======
拉下來的代碼
>>>>>>>
衝突原理
(重要)衝突的原理就是git當前的本地分支狀態爲merging時,如果你的代碼裏存在上面這一段代碼,則不能直接提交。
所以你要解決衝突其實就是在merging狀態下,把代碼裏的<<<>>>>這些符號刪乾淨就行了。舉例如下:
衝突時的代碼:
<<<<<<< HEAD
print "viviChou"
=======
print "viviChou1"
>>>>>>>
修改後的無衝突的,也就是把<<<和>>>和衝突的代碼刪除就好
print "viviChou"
衝突的時候是以分支爲單位進行pull或merge,所以出現衝突的情況下有可能是多個文件存在衝突,所以這就是在linux下不建議進行代碼衝突解決。因爲你要針對單個文件一個一個去vi操作,很麻煩。因此,使用windows環境下的IDE或git分支解決工具git tortoise都是一個不錯的選擇。下面介紹一下這兩種解決衝突的方式。
衝突解決方式
IDE處理
- 直接全IDE全局搜<<<字符串,然後一個一個手工選擇。如果你就是要自己本地的版本,那就保留HEAD到等號之間的就可以。如果要保留遠程分支的版本,那就是保留等號到>>>>之前的代碼,然後把<<< HEAD ==== >>>>這些特殊字符都刪乾淨即可。
- 還有一種方式,如果你用IDE是IDEA或pycharm這種,可以在菜單VCS->Checkout from Version Control裏配置git。配置完成後,當時git push時,有衝突的時候,IDE會有一個友好的界面讓你去操作衝突的代碼。
git tortoise
- 安裝 git tortoise,一直下一步到最後,然後會提示類似於第一次使用配置的提醒。
- 第一次使用配置只需要配置git.exe的文件位置。設置完後這一步,tortoise可以讀取git的相關配置,包括git global的相關用戶名和密碼。
- 右鍵tortoise->Settings,進入到這個界面後可以查看用戶名和密碼。如果沒有可以手工添加。可以查看紅框的【Edit global.git】查看相關配置。
- 配置完後成,就可以直接用右鍵進行相關操作。
- 打開git本地目錄,右鍵git commit->“xxxx”,試圖將本地代碼push上去。
- 出現黃色三角號的時候,就會提示文件衝突。
- 此時右鍵選擇tortoise->Show Log。
- 選擇第一行,然後雙擊下面的文件,就可以出現衝突文件的版本展示。
- 然後右鍵選擇要合併的模式,選擇保存。
- 依此類推解決所有有衝突的文件。
- 然後關閉tortoise的操作界面,到git本地目錄裏重新進行右鍵git commit->“xxxx”,試圖將本地代碼push上去,這次應該是成功的。