|
この記事は、雷嘉(レイ・ジア)著のWeChat公式アカウント「微笑みの建築家」から転載されたものです。転載の許可については、「微笑みの建築家」WeChat公式アカウントまでお問い合わせください。 チームではコミッターの役割を担い、同僚のコードレビューとマージを手伝っています。グループチャットで同僚から「ねえ、私のPRをマージしてくれない?」とか「ねえ、MRを提出したんだけど、マージしてくれない? 緊急にパッチが必要なんだ」といった声がよく聞こえてきます。少し混乱しました。PRとMR、どちらが正しいのでしょうか? 違いは何でしょうか? コードをマージする前に、この2つの概念を理解しておくことにしました。(皮肉です) プルリクエストとは何ですか? PRはPull Requestの略で、GitHubを頻繁に利用する人にはお馴染みのものです。GitHubには4,000万人の開発者と数億ものオープンソースプロジェクトが存在します。他の人のオープンソースリポジトリにコードを投稿したい場合は、通常、まずプロジェクトをフォークし、ローカルで修正を加えて自分のフォークしたリポジトリに送信します。最後にPRを送信し、他の人がコードをマージするのを待ちます。 Github のワークフロー: フォークワークフロー ステップ6に注目しましょう。Xiaomingはコードを書き終えた後、元の作者のリポジトリにマージしたいと考え、「プルリクエスト」を作成しました。プルリクエスト?これは明らかにプッシュです。Xiaomingは変更を元の作者のリポジトリにプッシュしました。「プッシュリクエスト」の方が適切だと思います。 GitHubが「プルリクエスト」と呼ぶことにこだわっているので、そのロジックを理解してみましょう。Xiaomingがコードを書き終えて、「元の作者さん、いくつか変更を加えました。変更をプルバックしてください!」と考えていると想像してみてください。元の作者の視点からすると、プルリクエストと呼ぶのは妥当に思えます。毎日、数え切れないほどの人が私のリポジトリからコードをフォークしています。私は興味のあるコードだけをプルバックするのです。 自分自身を納得させたと思います。 マージリクエストとは何ですか? MR は Merge Request の略で、GitLab を使用したことがある人なら誰でも知っているはずです。 余談ですが、GitHubはこんなにユーザーフレンドリーなのに、なぜ今でもGitLabが使われているのでしょうか?これは数年前に遡ります。MicrosoftがGitHubを買収する前は、GitHub上のすべてのプロジェクトは公開する必要がありました。つまり、たとえ出来の悪いコードであっても公開しなければならず、隠すことはできなかったのです。しかし、一部の中小企業やスタートアップ企業は、コードなどのコア資産を公開したくありませんでした。彼らはプライベートリポジトリを切実に必要としていたため、多くの企業がGitLabを選びました。もちろん、GitHubは後にプライベートリポジトリを開放しましたが、それはまた別の話です。 マージワークフロー チームの各メンバーは、リモート リポジトリの開発ブランチからコードをプルし、開発ブランチに基づいてローカルに新しい機能ブランチを作成し、変更を加えた後に機能ブランチをリモート リポジトリにプッシュし、機能ブランチを開発ブランチにマージするためのマージ リクエストを作成します。 上記のプロセスから、マージ リクエストは独自の機能ブランチをメイン ブランチにマージするものであることがわかります。 プルリクエストとマージリクエスト 上記の 2 つの例をまとめてみましょう。 GitHub はフォーク モデルで動作しており、開発者はプル リクエストを作成し、元の作者に「コードをプルバックしてください」と依頼することでコードを送信します。 GitLab は、開発者がコードを送信し、新しいマージ リクエストを作成して機能ブランチをメイン ブランチにマージするブランチ モデルを使用します。 上記の要約は一見理にかなっているように思えますが、GitHubではブランチ機能も、GitLabではフォーク機能も使えることを忘れないでください。さらに不可解なのが、次の点です。 GitHub では、ブランチのマージは依然として Pull Request と呼ばれ、GitLab ではフォーク モードは Merge Request とも呼ばれます。 いいえ、この回答は受け入れられません。Stack Overflowで他の人の理解度を調べてみたところ、案の定、とても人気のある投稿がありました。 プルリクエストとマージリクエスト ある回答では、GitLab の公式説明が引用されていました。 マージリクエストまたはプルリクエストは、Git管理アプリケーションで作成され、割り当てられた担当者に2つのブランチをマージするよう依頼するものです。GitLabやGitoriousなどのツールでは、担当者に要求される最終的なアクションであるため、「マージリクエスト」という名称が付けられています。この記事では、これらを「マージリクエスト」と呼びます。 簡単に言えば、これら 2 つのステートメントは根本的に異なるわけではなく、異なる視点から異なる方法で提示されているだけです。 はい、公式の結論は明らかです。これら 2 つは同じものなので、これ以上心配する必要はありません。 クレイジーな暴言 初心者にとって、GitHubのプルリクエストを理解するのはかなり難しいかもしれません。様々なウェブサイトでユーザーの声を見てみましょう。 スタックオーバーフロー 写真 知湖 国内外を問わず、多くのユーザーがこの名称を理解していません。本来はコードの提出を指すのに、なぜ「プルリクエスト」と呼ばれるのかと疑問に思う人もいます。中には、スペルミスではないかと疑うユーザーもいます。 GitHub に名前を付けるなら、次のような名前になるかもしれません。 プッシュリクエスト マージリクエスト 考えすぎだよ。「もしも」なんて考えられないんだ。(笑) 要約 プルリクエストとマージリクエストは、どちらも本質的にはコードをマージする方法ですが、単に異なる視点から異なる方法で表現しているだけです。したがって、学習や仕事ではどちらを使用しても問題ありません。 さらに、適切な名称は、初心者が技術やビジネスを理解する上で非常に役立ちます。例えば、「リバースプロキシ」という用語を見ると、多くの初心者が混乱してしまいます。他にも分かりにくい用語に遭遇した場合は、コメント欄でお気軽にご意見・ご指摘ください。 |