我們在上一篇中提到,對於不同的開發者要對同一個專案進行開發時,可以使用git branch
建立一個新的分支,這樣可以在不影響其他分支的情況下,多人同時地對專案進行開發,而在不同分支上面進行開發後,最終還是需要將所有分支的開發內容合併到master當中,所以本篇記錄了如何將多個分支合併。
利用git merge
可以將指定的分支合併起來。
利用git merge合併分支是將指定的分支合併到HEAD目前所在的位置
上,所以我們為了將issue合併到master中,所以第一步我們需要將HEAD利用git checkout master
移動到master的commit上。
當在issue分支上進行開發完成並且確認沒問題後,可以使用git merge issue
將分支內容合併到master當中。
可以在master裡面的index.html中看到,屬於issue分支裡面的<h2>在issue分支中進行修改</h2>
也出現在了master裡的index.html中,代表著master與issue的專案內容合併了。
隨然上面有提到合併分支,但是有時候一個專案可能不只一個開發者,在你在分支上開發新功能的時候,可能有其他開發者已經更新了master上面的commit。
在issue的index.html中新增了<link rel="stylesheet" href="css/all.css">
並且將它commit。
先在master的index.html中新增一行程式碼<h1>Master</h1>
,並將他commit產生一個新的節點。
在將兩個分支進行合併後,會產生一個文件,上面寫著它已經將issue合併到master當中,如果沒有問題的話就可以將此文件關閉。
關閉後會Git Bash上便會顯示合併完成。
在master的index.html中也會出現<link rel="stylesheet" href="css/all.css">
而此時的branch會變成下圖
在進行檔案合併的時候,若兩個不同的分支對於同一個檔案同一個部份進行更改,會發生merge衝突,因為git無法得知要保留哪一個分支的內容,所以必須手動選擇需要保留的內容再手動merge。
再issue的index.html中新增一行程式<h1>issue</h1>
再master的index.html中,相同位置下新增<h1>Master</h1>
當合併分支後會發現index.html中與先前不一樣,這代表兩個要合併的分支都更改到了同一個部分的資料而git並不知道哪一個要留下,所以需要手動刪除其中一個或是兩個都保留下來,下面選擇將兩行程式碼都保留下來,
選擇好要保留的程式碼後再手動將新的index.html commit上去,這樣就是手動的將兩個分支合併起來
再次回到issue的index.html發現依然保持著只有一行<h1>issue</h1>
的狀態,表示合併資料不會影響到issue分支
參考資料 :
掌握 Git 與 Github 程式時光機