iT邦幫忙

2021 iThome 鐵人賽

DAY 26
2
Modern Web

曼曼來比較快_Git 版本控制系列 第 26

【Day26】Git 版本控制 - merge 發生衝突

在上一篇文章中提到碰撞(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 的一個點是:錯誤碼都很好理解,他會告訴你是哪個檔案發生衝突,也會整理是哪一行的問題,根本是工程師的超得力助手!

那要怎麼解決問題呢?

  • 如果你是個人作業,就好好思考決定要留下哪一個版本,修改過後再提交。
  • 倘若你是團隊協作,那很明顯是溝通不良的問題,就好好進行溝通把問題解決掉,如果解決不掉問題,那就解決提出問題的人(誤)

上一篇
【Day25】Git 版本控制 - SHA-1 是什麼
下一篇
【Day27】Git 版本控制 - Stash 暫存
系列文
曼曼來比較快_Git 版本控制30

尚未有邦友留言

立即登入留言