在上一篇文章中提到碰撞(collision),讓我突然想到!還有這個主題可以拿來撰寫,就是:當你在 merge branch 時發生衝突。
這是什麼意思呢?我們來看個情況劇:
假設你現在一共有三個 branch,分別是 Master、func 1、func 2,然後你想將 func 1 跟 func 2 合併進 Master 中,結果卻發生以下錯誤訊息 Automatic merge failed; fix conflicts and then commit the result.
這是什麼意思呢?
簡單來說,就是你在 func 1 跟 func 2 中都更改了同一個檔案的同一行,以下簡單示意:
# test.py(branch = func 1)
a = 5
b = 2
print(a + b)
# test.py(branch = func 2)
a = 5
b = 2
print(a * b)
衝突就是發生在 test.py 的第六行,兩個版本一個是 +
另一個是 *
,git 就會混亂不知道該以哪個版本為主,因此產生合併衝突。
我很喜歡 git 的一個點是:錯誤碼都很好理解,他會告訴你是哪個檔案發生衝突,也會整理是哪一行的問題,根本是工程師的超得力助手!
那要怎麼解決問題呢?