GitHub 發生衝突該如何解決

前言

當參加團隊專案開發的時候,其實很容易發生程式碼衝突問題,那這邊就來講一下該如何解除衝突吧~

起手式

首先要解決衝突之前我們必須先製造衝突,別懷疑你沒看錯,有衝突你才知道怎麼玩~
(為了製造衝突都練就知道該如何惡意製造衝突給同事了)

這邊一樣召喚這個專案作範例

先來講講為什麼會發生衝突,首先 Git 衝突大多來自同一個時間修改同一支檔案導致,所以在團隊合作下通常會做好溝通,盡可能不要修改到同一支檔案,但是有些時候是特殊原因而導致,那就來試著學習該如何解決衝突吧~

衝突解決

首先我這邊直接快轉到發生衝突,前面就不多述了,當我們 Fork & clone 專案也做了修改,準備發 PR 回去給原專案作者時卻發生衝突

發生衝突

那這時候我們要替 clone 下來的專案做 git 處理,接下來讓我們依照流程來操作吧~

第一步驟 設置 Upstream

首先開啟原專案的 repo,然後複製 clone 網址

Image

接下來在指令視窗輸入

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

接下來你就會看到這個畫面

pull 專案

如果兩者變更你都要保留,那就按下”接受兩者變更”,這樣兩者就會保留下來

接受兩者變更

接受兩者變更

但是如果你要保留對方的,那就按下 “接受來源變更”

接受來源變更

接受來源變更

又如果(好多如果)你是要保留你自己而不是對方的,那就按下 “接受當前變更”

接受當前變更

接受當前變更

(通常都會是兩者變更都接受)

最後一步驟 重新 push 回自己專案

當你修改完衝突部分後,就可以準備重新 push 回自己專案

1
2
3
git add .
git commit -m '解決衝突'
git push origin master

這時候再試著發送 PR 看看,就可以發現衝突解決,可以正常合併囉~

Image

0%