git合併分支時當前分支落後於主分支

問題重現:

我們平時開發的時候都是從主分支創建分支,然後將該分支拉取到本地進行開發,開發完成以後再將此分支合併到遠程主分支。
但是一般而言,我們都是整個團隊在開發,等開發完了,需要合併到遠程分支的時候,遠程分支已經有很多次提交(commit)了,自己的分支已經落後主分支很多版本,切換回主分支的時候就不在最新commit上:

git checkout origin

git合併分支時當前分支落後於主分支_01.png
那麼這個時候應該怎麼辦呢?

解決思路:

假設當前開發的分支名爲:feature/dev
根據主分支(origin)代碼在本地創建新的臨時分支,命名爲temp
將臨時分支(temp)合併到開發分支(eature/dev
解決合併後的衝突
提交開發分支(feature/dev)並push到遠程倉庫
後將開發分支(feature/dev)合併到主分支(origin

實現:

第一步:根據主分支(origin)代碼在本地創建新的臨時分支,命名爲temp

# 獲取遠程倉庫origin主分支的最新代碼
git fetch origin

git合併分支時當前分支落後於主分支_02.png

# 根據主分支創建一個臨時分支
git checkout -b temp origin

git合併分支時當前分支落後於主分支_03.png
我們可以看到dev分支與temp分支是不一樣的
git合併分支時當前分支落後於主分支_04

第二步:將臨時分支(temp)合併到開發分支(feature/dev)

# 可以先看下開發分支與臨時分支的差別
git diff feature/dev temp

git合併分支時當前分支落後於主分支_05

# 切換到開發分支
git checkout  feature/dev

# 合併臨時分到開發分支
git merge temp

git合併分支時當前分支落後於主分支_06
我們可以看到在for_test/test_behand_merge.py文件中有代碼衝突,我們需要解決衝突後再進行下一步的操作

第三步:解決合併後的衝突

git合併分支時當前分支落後於主分支_07
解決衝突後是這樣的:
git合併分支時當前分支落後於主分支_08

第四步:提交開發分支(feature/dev)並push到遠程倉庫

我們現在可以看下Git的狀態:
git合併分支時當前分支落後於主分支_09
解決衝突後提交一下:

git status

git add test_behand_merge.py

git commit -m "測試:當前分支落後主分支 --> 創建臨時分支併合併到dev分支"

git push

git合併分支時當前分支落後於主分支_10

第五步:將開發分支(eature/dev)合併到主分支(origin)

切換到主分支:

git checkout origin

git合併分支時當前分支落後於主分支_11
我們會發現還是還是不是指向最新的提交,OK,沒有關係,我們讓Git指向最新的提交:

git checkout master

git合併分支時當前分支落後於主分支_12
我們會發現當前分支落後origin/master4個提交,OK,pull一下

# 記得pull一下
git pull

git合併分支時當前分支落後於主分支_13
這個時間就可以做最終的合併了:

git merge feature/dev

git合併分支時當前分支落後於主分支_14
最後push一下就ok了。

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