2017-03-04 145 views
1

這裏是場景:git - 如何處理confilicts

用戶A和B具有相同的源代碼。用戶A進行更改=>添加=>提交=>推送。遠程存儲庫中的源代碼已更改。

用戶B無需拉動即可開始更換。 (或者在用戶B拉動存儲庫之後應用了遠程存儲庫中的更改)然後他也想推送。此時發生衝突。我搜索了很多,並找不到任何解決方案,但手動編輯衝突

問題:手動編輯衝突是一種有效的方法嗎?特別是在一個大項目中?什麼是方法?

+0

可能重複[如何解決Git中的合併衝突?](http://stackoverflow.com/questions/161813/how-to-resolve-merge-conflicts-in-git) – 1615903

回答

1

手動管理合並衝突可能是一項繁瑣的任務。

嘗試git mergetool它將打開默認mergetool儘管您必須首先安裝mergetool。 有幾個mergetools它可以幫助您解決衝突,如meldopendiffkdiff3tkdiffxxdifftortoisemergegvimdiffdiffuseecmergep4mergearaxisvimdiffemerge

安裝後只需執行,它會打開安裝的mergetool,它會爲您提供一個gui,它將引導您完成每個衝突,並且您可以選擇如何合併。

如果您使用像IntelliJ這樣的IDE,它們提供了內置的工具來解決合併衝突。

+0

謝謝。此外,它似乎有一些崇高的編輯好。像'sublimerge' –

1

手動衝突解決方案是要走的路。衝突意味着開發人員B依賴於已更改的某些代碼。這意味着他必須使其代碼適應開發人員A所做的更改。即 - 解決此衝突。

有時可以自動解決衝突。有時可以通過簡單地選擇一個選項來解決,比如「我們在他們之後」。但即使git沒有衝突,代碼仍然有可能需要糾正。

例如:有一個函數some_func接受一些參數。開發人員A將其重命名爲some_new_name,而開發人員B在一些完全獨立的代碼區域中將呼叫添加到some_func。合併發生時沒有任何衝突,但代碼無法正常工作。

實際上,發生衝突可能比沒有發生衝突更好 - 您會收到您寫入的代碼必須更改的預警。