[Git] git merge 使用 fast-forward 差別
最近工作上遇到要多人協作的案子,開發者各自建立 branch 新增功能
開發完成後使用 git merge
合併 branch,在 git log 要查找哪個功能是誰修改的,不太好查找
上網搜尋後發現 git 在做 merge 時,會判斷現在的狀況是否適合使用 fast-forward,如果適合就會自動使用 fast-forward
- 使用 fast-forward 專案A,有一分支 develop,develop 下有一隻 commit
直接使用 git merge
合併回 master
使用 git log --graph
查看
master 會將 develop 上的 commit 視為 master 的 commit,並將 HEAD 移到跟 develop 的 HEAD 相同的 commit 上
- 不使用 fast-forward 專案B,有一分支 develop,develop 下有一隻 commit
直接使用 git merge --no-ff
合併回master
master 會新增一個 commit,內容為 develop 上的變更,並將 HEAD 移到新的 commit 上
在多人協作時,個人推薦使用 non-fast-forward 的方式。可以看出哪些 commit 是新增功能的 branch,且 master 要移除功能時,也只需處理一個 commit。