軟體開發與專案管理
在 Git 中,兩位開發人員在不同分支各自修改了同一檔案的同一行,然後將一個分支合併到另一個分支。此時會發生的情況,下列何者適當?
- A自動採用提交時間較新的變更,捨棄較舊的變更
- B合併進來的那一方(接收端)分支的變更一律優先,對方的變更自動被捨棄
- C合併因衝突(conflict)而停止,由開發人員確認內容,決定保留哪一方(或結合兩者)以解決衝突
查看答案與解析
正確答案:C. 合併因衝突(conflict)而停止,由開發人員確認內容,決定保留哪一方(或結合兩者)以解決衝突
Git 的合併會比較兩個分支各自從共同祖先以來的變更,若是不同位置的變更就自動結合。若同一處在兩邊都被修改,無法機械性地判斷哪一方正確,因此會以衝突停止合併,並在檔案中標示雙方的內容。開發人員編輯檔案解決衝突,測試後再提交。要減少衝突,有效的做法是不要讓分支長時間分開,而是勤於整合。
- A. Git 不會依時間選擇變更。同一處的變更要由人判斷並解決。
- B. 標準的合併不會自動捨棄任一方的變更,而是以衝突停止。
- C. 正確。同一處的變更會成為衝突,由人判斷並解決。