Stan Blog

學習過程中的一些記錄

[Git] git merge 使用 fast-forward 差別

最近工作上遇到要多人協作的案子,開發者各自建立 branch 新增功能

開發完成後使用 git merge 合併 branch,在 git log 要查找哪個功能是誰修改的,不太好查找

上網搜尋後發現 git 在做 merge 時,會判斷現在的狀況是否適合使用 fast-forward,如果適合就會自動使用 fast-forward

  1. 使用 fast-forward 專案A,有一分支 develop,develop 下有一隻 commit 1.png

直接使用 git merge 合併回 master 使用 git log --graph 查看 2.png

master 會將 develop 上的 commit 視為 master 的 commit,並將 HEAD 移到跟 develop 的 HEAD 相同的 commit 上

  1. 不使用 fast-forward 專案B,有一分支 develop,develop 下有一隻 commit 3.png

直接使用 git merge --no-ff 合併回master 4.png

master 會新增一個 commit,內容為 develop 上的變更,並將 HEAD 移到新的 commit 上

在多人協作時,個人推薦使用 non-fast-forward 的方式。可以看出哪些 commit 是新增功能的 branch,且 master 要移除功能時,也只需處理一個 commit。

Comments

comments powered by Disqus