文章目錄
問題重現:
我們平時開發的時候都是從主分支創建分支,然後將該分支拉取到本地進行開發,開發完成以後再將此分支合併到遠程主分支。
但是一般而言,我們都是整個團隊在開發,等開發完了,需要合併到遠程分支的時候,遠程分支已經有很多次提交(commit
)了,自己的分支已經落後主分支很多版本,切換回主分支的時候就不在最新commit
上:
git checkout origin
那麼這個時候應該怎麼辦呢?
解決思路:
假設當前開發的分支名爲:feature/dev
根據主分支(origin
)代碼在本地創建新的臨時分支,命名爲temp
將臨時分支(temp
)合併到開發分支(eature/dev
)
解決合併後的衝突
提交開發分支(feature/dev
)並push到遠程倉庫
後將開發分支(feature/dev
)合併到主分支(origin
)
實現:
第一步:根據主分支(origin)代碼在本地創建新的臨時分支,命名爲temp
# 獲取遠程倉庫origin主分支的最新代碼
git fetch origin
# 根據主分支創建一個臨時分支
git checkout -b temp origin
我們可以看到dev分支與temp分支是不一樣的
第二步:將臨時分支(temp)合併到開發分支(feature/dev)
# 可以先看下開發分支與臨時分支的差別
git diff feature/dev temp
# 切換到開發分支
git checkout feature/dev
# 合併臨時分到開發分支
git merge temp
我們可以看到在for_test/test_behand_merge.py
文件中有代碼衝突,我們需要解決衝突後再進行下一步的操作
第三步:解決合併後的衝突
解決衝突後是這樣的:
第四步:提交開發分支(feature/dev)並push到遠程倉庫
我們現在可以看下Git的狀態:
解決衝突後提交一下:
git status
git add test_behand_merge.py
git commit -m "測試:當前分支落後主分支 --> 創建臨時分支併合併到dev分支"
git push
第五步:將開發分支(eature/dev)合併到主分支(origin)
切換到主分支:
git checkout origin
我們會發現還是還是不是指向最新的提交,OK,沒有關係,我們讓Git指向最新的提交:
git checkout master
我們會發現當前分支落後origin/master
4個提交,OK,pull一下
# 記得pull一下
git pull
這個時間就可以做最終的合併了:
git merge feature/dev
最後push一下就ok了。