當更改工作區和遠端 Git 存放庫中的同一個項目時,就會發生衝突。 發生衝突時,Git 狀態會顯示 Conflict,並且 Commit 會停用。
當發生衝突時,若你選取 更新,就會看到 解決衝突 按鈕。
可透過三種方式來解決衝突:
- 選取要透過 UI 保留的版本。
- 將工作區或 Git 存放庫還原為先前已同步的狀態。
- 在 Git 中解決衝突。
- 如果一或多個項目無法更新,手動更新工作區。
在 UI 中解決衝突
選擇 「解決衝突」 以查看所有有衝突的項目清單。 然後可以選取每個項目要保留的版本。 對於每個存在衝突的項目,可以選擇接受來自 Git 存放庫的傳入變更,或保留工作區中目前的版本。
- 選擇[接受傳入變更]以覆寫工作區中的變更。 如果匯入成功,工作區變更會遺失並且 Git 狀態會變更為已同步。
注意
接受傳入的變更會覆寫工作區中的當前項目。
選擇 [保留目前內容] 以保留工作區中的目前版本。 更新完成之後,Git 狀態會變成未認可的變更,因為工作區中的變更尚未認可至分支。
你也可以打開 比較與提交變更 對話框,將不同版本的衝突項目並排比較。 透過這種方式檢視變更,有助於你在解決衝突前決定要保留哪個版本。
還原為先前的狀態
您可以將整個工作區或 Git 分支還原為上次同步的狀態。 如果將 Git 分支還原到先前的提交版本,仍然可以看到對未同步的分支所做的變更。 如果還原工作區,則會遺失自上次提交之後對工作區所做的所有變更。
若要還原為先前同步的狀態,請執行下列動作之一:
您也可以透過中斷連線並重新連線工作區來解決衝突。 重新連線時,請選取您想要同步的方向。不過請注意,重新連線會覆寫工作區或分支中的所有項目,而不只是發生衝突的項目。 它不會將工作區或分支回復到上次同步的狀態。 而是會用另一個位置的內容,覆寫該位置中所有的內容。
在 Git 中解決衝突
如果不確定做出了哪些變更以及要選擇哪個版本,並且不想還原為先前的狀態,則可以嘗試透過建立新分支、解決該分支中的衝突並將其與目前的分支同步,來解決 Git 存放庫中的衝突。
注意
預設情況下,只有工作區管理員才能切換已連線工作區的 Git 分支(或切換到新分支)。 然而,工作區管理員可以啟用每個工作區設定, 允許至少有貢獻者角色的使用者更改 Git 分支 ,將分支切換功能委派給貢獻者或成員。 欲了解更多資訊,請參閱 「將工作區連結到 Git 倉庫」。
在 [原始檔控制] 面板上,利用螢幕底部顯示的上次同步的分支 ID 建立新分支。
此步驟會使用與做出的更改發生衝突之前上次同步的 Git 狀態,從發生衝突的分支建立新的分支。 可以在 [原始檔控制] 面板中看到變更,但 Git 分支中沒有任何可更新的變更。 簽出分支會保持目前工作區的狀態,因此更改分支時未提交的變更將被保留。
將變更提交至新分支。 此新分支現在包含您在沒有與變更衝突的情況下,對較早版本的 Git 分支中項目所做的更改。
在 Git 中,解決原始分支與新分支之間的衝突。
在 Git 中,將新分支合併至原始分支
在 Fabric 中,將工作區切換回原始分支。