1. 程式人生 > >IDEA解決不同git分支衝突

IDEA解決不同git分支衝突

背景:

專案open-api 有五個分支如下圖所示,beta是測試分支(本地不能直接提交到beta),develop是開發分支,master是生產分支,user-api(為開發某個功能從master拉的特性分支),trade-optimize(為開發某個功能從master拉的特性分支), user-api在trade-optimize之後拉取的,拉取user-api時trade-optimize還正在開發沒有上線,此時要求user-api要提前上線.(解決程式碼衝突時user-api已上線(此分支上線時沒有衝突並且程式碼已合併到了beta及develop),若trade-optimize上線合併master,develop,beta都會出現衝突)

造成程式碼衝突的原因:這兩個分支開發時都在maven中引入了dubbo 服務jar包,並都修改了一些配置檔案並且兩個分支修改的是同一個檔案的同一行.


解決衝突(本質就是解決與master衝突):

第一步:當前所在分支trade-optmize,如圖所示點選pull


第二步:點開的時候是勾選的origin/trade-optimize分支,切換到origin/master分支



第三步:此圖是盜的但都是一樣的,所以此次拼想象,我只能口頭描述


點選右下角的pull,會出現一個彈框叫你解決衝突,右上角有三個按鈕,根據自己的情況合併程式碼,Accept Yours:保留你自己的程式碼, Accept Theirs:保留別人的,merge合併(此處還是人工把需要的程式碼複製貼上到結果集result裡面比較保險);

我這兒遇到的就比較簡單隻需要保留我自己的程式碼就可以了;

第三步:

將修改後的程式碼commit 然後 push 到遠端倉庫;這樣再將trade-optimize合併到develop,beta上就不會出現衝突了;

但是我這兒出現了一個問題,就是合併衝突後commit時idea顯示沒有修改過的檔案(一般情況下不會,直接在idea影象化操作就可以了),此時就只能動用git命令了.

先切換到工程的目錄下


右鍵開啟git bash,執行git status命令,此處顯示沒有我需要新增版本控制的檔案,所以我就直接執行: git commit –m ‘解決衝突’ 將程式碼提交到本地倉庫,然後再idea push到遠端倉庫就OK了(此處我之所以不直接選用git push 是因為命令列不會顯示你要push的檔案,所以還是影象化操作比較好)