GitLab 在線合併解決衝突後反向合併的問題

問題描述:

在gitlab上面做合併操作,出現衝突,解決衝突後提交,確認合併,發現兩個分支互相合並了,平白無故多了很多麻煩,巨坑。

已經被它坑了不少次了,如果使用 Gitlab 提供在在線衝突解決工具的話,本來是將 A 往 B 合併的,結果變成了 B 往 A 合併,導致分支管理混亂。這個設計合理嗎?

4ghctS.png
git正常的合併分支:

切換到目標分支
執行合併命令,git merge 源分支
沒有衝突合併結束,出現衝突,在目標分支上面解決衝突,執行commit命令,合併結束

然而,gitlab上面做合併分支的操作,出現衝突時,gitlab是在源分支上面提交我們解決衝突的代碼,最後點合併的時候再把源分支合併到目標分支,這就導致合併結束後,源分支與目標分支出現互相合並的效果,產生很多沒必要的問題。

後來才找到原因:
4ghw6A.png
解決方法:

方法1:設A分支要合併到B分支,且出現了衝突,可以先從A分支拉一個臨時分支a,用a分支合併到B分支

方法2:設A分支要合併到B分支,且出現了衝突,合併完成後,對A分支做回滾

git回滾版本:

git reset --mixed 目標版本號,回退一個版本,且會將暫存區的內容和本地已提交的內容全部恢復到未暫存的狀態,不影響原來本地文件(未提交的也不受影響)

git reset --soft 目標版本號,回退一個版本,不清空暫存區,將已提交的內容恢復到暫存區,不影響原來本地的文件(未提交的也不受影響)

git reset --hard 目標版本號,回退一個版本,清空暫存區,將已提交的內容的版本恢復到本地,本地的文件也將被恢復的版本替換

回滾後再強推到遠程git服務器:git push -f origin test 強制推送到遠程分支,-f 強制,origin 遠程倉庫名,test 遠程分支名

git revert 目標版本號

這個命令在本地反向做一個版本抵消目標版本,然後正常commit提交,push到遠程分支

4ghGTK.png
原文:https://blog.csdn.net/superyueguang/article/details/114309492

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