成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

吵瘋了,Pull Request到底是個啥?

開源
PR 的全稱是Pull Request,經常用 Github 的同學對這個肯定很熟悉了。

[[379085]]

本文轉載自微信公眾號「愛笑的架構師」,作者雷架 。轉載本文請聯系愛笑的架構師公眾號。   

在團隊中我承擔了Committer 的責任,也就是幫同事們檢視代碼(Code Review)和合入代碼,經常聽到有同事在群里喊:“大佬,幫我合個 PR”,“大佬,我剛提交了一個 MR,幫忙合一下,急著出補丁”。我有點懵了,PR 和 MR 到底哪個才是正確的,這兩個到底有什么區別,我決定先搞清楚這兩個概念再合入他們的代碼。[手動滑稽]

什么是Pull Request?

PR 的全稱是Pull Request,經常用 Github 的同學對這個肯定很熟悉了。Github 聚集了4000萬開發者,過億的開源項目,如果想給別人的開源倉庫貢獻代碼,通常是先 fork 別人的項目,然后本地修改完成提交到自己的個人 fork 倉庫,最后提交 PR 等待別人合入你的代碼。

Github 的工作流:

fork 工作流

我們重點看一下第6步,小明寫完代碼了想合入到原作者的倉庫,新建了一個“pull request”,拉請求?這明明是推啊,小明將自己的修改推到原作者的倉,感覺叫“push request”比較合適吧。

既然 Github 堅持叫“pull request”,我們試著理解一下它的思路,小明寫完代碼了心里肯定是在想:原作者大神,我改了點東西,你快把我的修改拉回去吧。站在原作者的角度思考,叫pull request好像也說得過去,每天有大量的人從我這里 fork 代碼走,我只會拉取我感興趣的代碼回來。

我好像把自己說服了。

什么是 Merge Request?

MR 的全稱是 Merge Request,相信玩過 Gitlab 的同學都知道這個。

插播一下,Github這么好用了為什么還有人玩 Gitlab,這就要幾年前說起了。在微軟沒有收購 Github 之前,Github 上面所有的項目必須是公開的,也就是說自己很渣的代碼也必須要公開,不能藏著噎著。但是在一些小的公司或者創業團隊,代碼這種核心資產是不希望被公開,他們迫切需要私密倉這種需求,所以很多人都選擇了 Gitlab。當然后面 Github 也放開了私有倉庫,這是后話了。

merge 工作流

團隊中每個人都從遠程倉庫 develop 分支拉取代碼,本地基于 develop 分支新建特性分支,修改完代碼將特性分支推到遠程倉,緊接著新建 Merge Request 期望將自己的特性分支合入 develop 分支。

從上面這個流程來看Merge Request 就是將自己的特性分支合入到主干分支。

Pull Request VS Merge Request

總結一下上面兩個例子。

Github 是玩 fork 模式的,開發者提交自己的代碼新建 Pull Request,請求原作者:“把我的代碼拉回去吧”。

Gitlab 是玩分支模式的,開發者提交自己的代碼新建 Merge Request,想將自己的特性分支合并到主干。

上面總結的好像很有道理,但是不要忘了,Github 也可以玩分支模式,Gitlab 也可以玩 fork 模式,更令人無語的是:

Github 上合并分支還是叫 Pull Request;Gitlab 上fork 模式也是叫 Merge Request;

不行,這種答案我沒法接受,去 stackoverflow上搜一些大家是怎么理解的。果然有一個帖子很火:

Pull request vs 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. In this article we'll refer to them as merge requests.

翻譯過來簡單理解就是:這兩個沒有本質區別,站在不同立場說法不一樣而已。

好了,官方已經蓋棺定論了,這兩個就是一個東西,不要糾結啦~

瘋狂吐槽

對于初學者來說,Github 的 pull request 確實讓人難以理解,我們去各大網站看看用戶的聲音。

 

StackOverflow

圖片

知乎

從國外到國內都有大量的用戶對這個名字不理解,明明是提交提交代碼,為什么是 pull request,有些人甚至懷疑是名字打錯了。

如果讓我來給 Github 取名字,我可能會取:

push request 推請求

merge request 合并請求

想多了,不會有如果。[嘿哈]

總結

Pull Request 和Merge Request 本質上都是合入代碼,只是站在不同角度有不同的說法而已,因此在學習和工作中無論用哪一個都沒有問題。

另外,一個好的名字對于新手理解這項技術或者業務非常有幫助,比如看到“反向代理”這個名詞很多新手是懵的,大家還遇到哪些難以理解的詞歡迎在留言區討論和吐槽。

 

責任編輯:武曉燕 來源: 愛笑的架構師
相關推薦

2024-02-07 12:35:00

React并發模式concurrent

2021-05-11 07:30:58

JNIJavaAPI

2022-05-04 08:38:32

Netty網絡框架

2022-04-10 19:26:07

TypeScript類型語法

2024-07-12 15:08:23

Python@wraps函數

2021-12-26 00:01:51

Log4Shell漏洞服務器

2024-08-26 14:23:56

2021-12-16 15:11:59

Facebook天秤幣加密貨幣

2024-08-01 17:34:56

Promiseaxios請求

2022-09-06 21:38:45

數字人數字孿生

2012-07-25 09:09:46

GNOME OS桌面

2013-05-29 10:17:56

Hadoop分布式文件系統

2024-02-26 00:00:00

人工智能序列數據機器人

2020-03-07 09:47:48

AVL樹算法場景

2020-10-29 07:03:56

Docker容器存儲

2024-02-01 20:15:37

2021-12-16 21:13:38

通信網管平臺

2025-05-28 00:30:00

MCP智能體Agent

2019-10-28 09:59:26

區塊鏈技術智能

2021-09-13 13:24:22

硬盤SLC緩存技術SSD
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩成人在线电影 | 91精品国产综合久久久动漫日韩 | 亚洲成人久久久 | 91成人午夜性a一级毛片 | 国产精品1区2区 | 正在播放国产精品 | 国产精久久久久久久妇剪断 | 国产精品观看 | 91精品国产91久久久久久 | 福利网址 | 久久新视频 | 三级黄视频在线观看 | 国产精品久久久精品 | 久久日韩精品 | 亚洲免费观看 | 亚洲国产精品va在线看黑人 | 欧美不卡一区二区 | 日韩a| 夜夜骑首页 | 国产精品久久国产精品 | 色婷婷久久久久swag精品 | 免费观看a级毛片在线播放 黄网站免费入口 | 久久久91精品国产一区二区三区 | 色伊人网 | 亚洲免费在线观看 | 国产精品久久久久久久久久免费看 | 国产精品一区二区在线 | 日韩一级精品视频在线观看 | 欧美精品一区二区三区四区五区 | h肉视频 | 国产最新网址 | 欧美日韩亚洲国产 | 国产一级大片 | 久久不卡日韩美女 | 精品免费国产 | 97视频人人澡人人爽 | 亚洲一区二区在线视频 | av毛片| 在线日韩| 91av国产在线视频 | 国产成人精品免费视频大全最热 |