git多分支合併時的坑

場景1

有兩個分支,master和基於master創建的dev分支
master分支對文件A執行了移動路徑的操作(rename)
dev分支也對文件A執行了相同的移動路徑的操作(rename)
現在,想要把dev分支合併回master分支,文件A會不會衝突?

合併結果:
實際測試一下,發現不會衝突,因爲兩邊相對位置相同且都沒有改變文件A的內容。


場景2

有兩個分支,master和基於master創建的dev分支。
master分支對文件A執行了移動路徑的操作(rename)。
dev分支也對文件A執行了相同的移動路徑的操作(rename),然後修改了文件A的內容(modify)。
現在,想要把dev分支合併回master分支,文件A會不會衝突?

合併結果:
實際測試一下,發現會衝突!!!爲什麼會衝突呢,明明一個分支修改,一個分支沒變化,這種情況不應該衝突的,一臉懵逼…

然後在同事那邊試了一下,相同的情況,同事那邊不會衝突!!!

於是開始懷疑使用的工具,我用的是TortoiseGit(小烏龜),同事用的是Git Extensions,是不是這兩個工具,對於merge操作執行的指令不同?於是裝了個Git Extensions又試了下,還是衝突!!!

所以不是工具的問題,那麼只可能是git本身有問題了,git --version對比了下git版本,同事的是git 2.26.2,我的是git 2.16.1,然後去官網下了個最新的git覆蓋安裝,最新版本的是git 1.27.0,再試一次,不衝突了…


結論

雖然兩個分支操作花哨了些(其實就是多了一步rename),但是本質還是相同的文件A,一個分支未修改,一個分支有改動,是不會出現衝突的,出現了衝突是因爲git低版本有bug,更新一下git就好了,所以,勤更新,使用新版本是個好習慣呀~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章