本文轉載自:https://blog.csdn.net/azl397985856/article/details/106088794
這篇文章只為說明一個問題:“Pull Request 與 Merge Request 有什么區別?”
在我的想象中,它倆肯定是不一樣的,並且大部分人的想法應該和我是一樣的,我先來說說我的想法。
自我 YY
如果經常用 Github,一定十分了解 Pull Request。
如果經常用 Gitlab,一定十分了解 Merge Request。
基於對 Github 和 Gitlab 的了解,我潛意識里感知到 Pull Request 與 Merge Request 是有區別的。
Github 一般是公開庫,當然沒有人願意別人直接在自己的倉庫上面修改代碼。所以我們如果要給別人的倉庫貢獻代碼,一般是要 fork 一個倉庫,在自己的倉庫改完后,給原倉庫提交 PR 請求,請求原倉庫主人把你的代碼「拉(pull)回去」。
下圖是一般的 Github 工作流程。
Gitlab 一般是私有庫,一個團隊維護一個倉庫,通常大家會新建自己的分支,開發完成后,請求合並回主干分支。下圖是一般的 Gitlab 工作流程。
基於上面的認知,我起初覺得
-
Github 這種需要 fork 倉庫的模式,應該叫 Pull Requset,請求目標倉庫來拉你的代碼。
“我改了你們的代碼,你們拉回去看看吧 !” -
Gitlab 這種純分支模式,應該叫 Merge Request,是自己請求把代碼合並進主干。
“請求合並代碼!”
說實話,我自己都說服不了自己上面的理解是正確的。畢竟
-
在 Github 上也可以玩分支模式,提交合並請求同樣用 Pull Request。
-
在 Gitlab 上也可以玩 fork 模式,提交合並請求還是 Merge Request。
真實情況
我們來看看 gitlab 官方是怎么說的:
❝Merge or pull requests are created in a git management application and ask an assigned person to merge two branches. Tools such as GitHub and Bitbucket choose the name pull request since the first manual action would be to pull the feature branch. Tools such as GitLab and Gitorious choose the name merge request since that is the final action that is requested of the assignee.
❞
大概意思就是 「Merge Request 和 Pull Request 是同一個東西,僅僅只是名字不一樣。
一般我們執行分支合並,需要執行下面兩個命令:
git pull // 拉回需要合並的分支 git merge // 合並進目標分支
Github 選擇了第一個命令來命名,叫 Pull Request。
Gitlab 選擇了最后一個命令來命名,叫 Merge Request。
這個理由是 Gitlab 官方給的,我覺得還是可信的。所以我們的結論就是:
“Pull Request 和 Merge Request”是一個東西。