GitHub 發生衝突該如何解決
前言
當參加團隊專案開發的時候,其實很容易發生程式碼衝突問題,那這邊就來講一下該如何解除衝突吧~
起手式
首先要解決衝突之前我們必須先製造衝突,別懷疑你沒看錯,有衝突你才知道怎麼玩~
(為了製造衝突都練就知道該如何惡意製造衝突給同事了)
這邊一樣召喚這個專案作範例
- 感興趣的專案網址:test-repos
- 專案作者:jc-eng(我的小分身)
- 合作路人:就是我自己
先來講講為什麼會發生衝突,首先 Git 衝突大多來自同一個時間修改同一支檔案導致,所以在團隊合作下通常會做好溝通,盡可能不要修改到同一支檔案,但是有些時候是特殊原因而導致,那就來試著學習該如何解決衝突吧~
衝突解決
首先我這邊直接快轉到發生衝突,前面就不多述了,當我們 Fork & clone 專案也做了修改,準備發 PR 回去給原專案作者時卻發生衝突
那這時候我們要替 clone 下來的專案做 git 處理,接下來讓我們依照流程來操作吧~
第一步驟 設置 Upstream
首先開啟原專案的 repo,然後複製 clone 網址
接下來在指令視窗輸入
1 | git remote add upstream https://github.com/jc-eng/test-repos.git |
git remote add [遠端名稱] [遠端網址]
接下來我們就可以透過輸入 git remote
查看目前有哪幾個遠端分支
(upstream 是原專案的專案路徑,origin 則是我們 Fork 過來的專案路徑)
第二步驟 更新專案
由於我們發 PR 回去給作者會發生衝突,所以我們必須更新專案到自己的本地端,只需要輸入
1 | git pull upstream master |
接下來你就會看到這個畫面
如果兩者變更你都要保留,那就按下”接受兩者變更”,這樣兩者就會保留下來
但是如果你要保留對方的,那就按下 “接受來源變更”
又如果(好多如果)你是要保留你自己而不是對方的,那就按下 “接受當前變更”
(通常都會是兩者變更都接受)
最後一步驟 重新 push 回自己專案
當你修改完衝突部分後,就可以準備重新 push 回自己專案
1 | git add . |
這時候再試著發送 PR 看看,就可以發現衝突解決,可以正常合併囉~