git 衝突

目錄

前言

git 正常操作

上傳本地代碼

git合併分支

衝突場景——分支狀態變爲merging

衝突原理

衝突解決方式

IDE處理

git tortoise


前言

如果你要在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

  1. 安裝 git tortoise,一直下一步到最後,然後會提示類似於第一次使用配置的提醒。
  2. 第一次使用配置只需要配置git.exe的文件位置。設置完後這一步,tortoise可以讀取git的相關配置,包括git global的相關用戶名和密碼。
  3. 右鍵tortoise->Settings,進入到這個界面後可以查看用戶名和密碼。如果沒有可以手工添加。可以查看紅框的【Edit global.git】查看相關配置。
  4. 配置完後成,就可以直接用右鍵進行相關操作。
  • 打開git本地目錄,右鍵git commit->“xxxx”,試圖將本地代碼push上去。
  • 出現黃色三角號的時候,就會提示文件衝突。
  • 此時右鍵選擇tortoise->Show Log。
  • 選擇第一行,然後雙擊下面的文件,就可以出現衝突文件的版本展示。
  • 然後右鍵選擇要合併的模式,選擇保存。
  • 依此類推解決所有有衝突的文件。
  • 然後關閉tortoise的操作界面,到git本地目錄裏重新進行右鍵git commit->“xxxx”,試圖將本地代碼push上去,這次應該是成功的。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章