我昨天已經成功建立readme-update這個Branch,在上面修改了README並Commit,Push到GitHub上了。
所以今天就要將昨天在readme-update這個Branch修改的結果合併回master,那就要來認識一下Merge了!
Merge 是合併的意思。git merge 就是 Git用來合併不同分支開發成果的指令。當我在其他Branch上完成修改確認沒有問題後,就可以透過Merge將這些修改合併回主要分支master。
那我們就拿昨天修改README完成Commit和Push的readme-update這個Branch來實際操作,將這些修改合併回 master,看看 Merge 實際上是怎麼運作的!
首先使用git status 確認目前所在的 Branch,然後確認有沒有未提交的修改。
我們要將 readme-update 的修改合併進master,所以要使用git switch master先把所在分支切換回master,因為git merge 是將指定分支合併進「目前所在的分支」。
接著用git branch來確認目前所在的分支是不是在master。
做完前面的步驟確認自己是在master之後就可以開始正式合併了!
輸入以下指令:
git merge readme-update
這個指令的意思是說:將 readme-update 的修改合併進目前所在的 master。
這裡出現了Fast-forward代表這次使用的是快轉合併,他是什麼意思呢?
是因為我建立了readme-update 後master並沒有新增其他 Commit,所以Git可以直接將 master 移動到 readme-update最新的Commit不需要另外建立一筆 Merge Commit。
下面的 1 file changed, 3 insertions(+),代表的就是這次合併修改了 1 個檔案並新增了 3 行內容。
我之前一直以為我將readme-update合併到master之後, readme-update 這條 Branch會消失,但輸入:git branch發現 master 和 readme-update 都還在。我就問了AI為什麼,才知道原來 Merge 只是將修改成果合併到主要分支,並不會自動刪除原本的 Branch。
接著我就使用:
git log --oneline --decorate -5
來查看最近的Commit 紀錄。
可以看到 master 和 readme-update 都指向 0fb5430,表示兩條Branch目前位於同一個Commit,也就是有合併成功的意思。
我們在本機已經成功 Merge了,但GitHub 上的master還沒有同步更新,所以最後輸入:
git push origin master
將合併後的 master 推送到 GitHub。
到GitHub看看 master 的 README,可以看到昨天在 readme-update新增的專案維護段落也出現了!
今天的第一次Merge十分的順利,因為Git 直接幫我們完成了 Fast-forward。但是假如我跟我同學在兩條 Branch做不一樣的功能但修改了同一個地方,Git會不知道該保留哪個版本嗎,那該怎麼辦?
明天就要來了解 ** 合併衝突** 。