1. 程式人生 > 實用技巧 >記錄一次git合併

記錄一次git合併

背景

我今天在向其他分支合併程式碼時,出現衝突,然後我就在gitLab網頁上解決衝突。等我下午回頭整理自己分支的時候,發現自己分支有其他分支的程式碼。這也是GitLab在merge程式碼時的一個操作:反向合併

模擬重現

  • A:自己提測分支,於明天要合併到master分支;
  • B:其他提測分支,於後天要合併到master分支;

由於測試環境正在測試B分支的功能,所以測試環境只能發B分支;現在我想驗證A分支上臨時新增的小功能,所以我就要把A分支合併B分支上,但出現衝突了,我在GitLab上直接解決衝突了。

GitLab的解決衝突的機制:會先將B合併到A分支,此時A分支把衝突解決了,再將把解決衝突後的A分支合併到B分支。

這個時候就出現問題了:
明天要上線的A分支,含有後天才上線B分支的程式碼!!!

解決辦法:

首先,明確一個規則:A分支一定不能含有B分支的程式碼。
而在測試分支互相合並出現衝突後,不能直接解決衝突。因為,一但解決衝突,倆個測試分支都互相含有對方分支的程式碼;只要倆個分支上線時間不一致,就會違反上面的規則。

如何解決?
新建一個臨時分支C,測試環境使用C分支來測試。以最先上線的分支A來建立分支C,然後B分支向C提程式碼,這樣只有B分支有A分支程式碼,而A分支是乾淨的。

git衝突的原因

https://blog.csdn.net/themagickeyjianan/article/details/81540662