ウェブサイト検索

Gitプルリクエストとは何ですか、そしてそれをどのように使用しますか?


プルリクエストは、GithubやGitlabのようなオンラインgitサービスの機能です。これにより、リポジトリへのアクセスがなくても、誰でも変更を追加するようリクエストすることができます。彼らがどのように機能するのか、オープンソースコラボレーションにどのように利用するのかについて議論します。

プルリクエストは何をしますか?

それがどう見えるかにかかわらず、

git

ツールとしては、完全に分散化されたシステムです。つまり、Github.com上のリポジトリと、あなたのローカルマシン上のリポジトリは、何の違いもありません。リポジトリで作業するためにGithubに接続しているのではなく、Githubからコードをローカルリポジトリにコピーして、そこで作業をしているのです。

変更をプッシュしたい時は、コミットを作成して実行できます。

git push

特定の「リモート」に更新を送信しており、これは他のGitリポジトリであっても構いませんが、通常はGithub、Bitbucket、またはGitlabのようなオンラインホスティングサービスです。これにより、リモートリポジトリはあなたのリポジトリと同期されます。

ただし、これはコミットをプッシュする許可がある場合にのみ機能します。通常はパスワードまたはSSHキーで設定されています。この権限は、リポジトリを管理している組織のメンバーにのみ与えられます。さもなければ、誰でもGitの履歴を変更してしまうことになります。もしあなたがその組織のメンバーでない場合、変更を加えたいときはどうしたらいいのでしょうか?

さて、Gitリポジトリが更新される別の方法があります---

git pull

おそらく、同僚がプッシュした変更を受け取るたびにこれをよく行っているでしょう。その場合、リモートリポジトリからコミットを引き下ろし、ローカルリポジトリと同期しています。

しかし、Gitは分散型であるため、あなたのリポジトリとリモートリポジトリの間に本当の違いはありません。実際、実行することができます。

git pull

サーバーから逆に、これがプルリクエストを機能させるための核心です。

プルリクエストとは、リモートサーバー(およびそれを維持管理している人々)に対して、更新されたコミットがあることを知らせることです。それらを確認してリモートリポジトリに統合してもらいたいということです。彼らが変更を受け入れると、リモートリポジトリは実行されます。

git pull

あなたのローカルリポジトリに対して、SSHキーを承認することなくコードを統合することができます。

オープンソース協力の背骨

プルリクエストはオープンソースライブラリで常に使用されています。結局のところ、オープンソースの目的の多くは、開発者が自分のコードが役立つ場合にプロジェクトに貢献できることです。

プルリクエストはその作業を可能にします。プロジェクトのメンテナー、つまりそれを管理している管理者が通常プルリクエストをレビューし、コードを統合するかどうか、あるいはそれが準備できる前に特定のバグを修正する必要があるかどうかを決定します。

プルリクエストは正確にはの機能ではありません。

git

それ自体、正確な実装はサービスによって異なるでしょう。しかし、Githubの場合、リポジトリのメニューバーにプルリクエストがあり、そこにはフィルタリングできるオープンおよびクローズされたリクエストのリストが表示されます。

それらのいずれかをクリックすると、リクエスターによって行われたコメントや、それに関連するコミットを確認できます。

リポジトリのメンテナーであれば、リクエストをレビューしてマージすることができます。また、問題がある場合はコメントを残して、一緒にコードに取り組むことができます。これが、Githubのような公共の場がオープンソースのコラボレーションにとって素晴らしい理由の一つです。ドキュメントの言い回しを変更するような簡単なことでも、誰でも協力して行うことができます。

プルリクエストは、イシューとは異なります。イシュー追跡は、バグ修正や新機能のための公共のコラボレーションを容易にするために、Githubのような多くのサービスの機能です。本質的には、各イシューにはメンテナやコミュニティが議論できるトピックがあります。例えば、

dotnet/csharplang

C#というプログラミング言語の設計についての議論のための公式リポジトリです。イシューに行くと、言語の将来のバージョンに関するコンセプトについて多くの人々が議論しているのが見つかります:

すべての問題がプルリクエストにつながるわけではありません。もしメンテナーが問題を修正した場合、それは重要ではありません。もしコラボレーターが問題を修正した場合は、プルリクエストを提出する必要があります。

すべてのプルリクエストは拒否されるか、リポジトリ内のコード変更に直接つながります。問題は、開発の進捗を追跡し、修正が必要なバグを記録する手段に過ぎません。

プルリクエストを作成する

もう一度言いますが、これに関する具体的な手順は使用しているサービスによって異なりますが、ほとんどのオープンソースのコラボレーションはGithubで行われるため、その手順を示します。

リクエストをしたいリポジトリに移動し、「プルリクエスト」タブの下にある「新しいプルリクエスト」をクリックしてください。

ここには二つの選択肢があります。もしあなたがリポジトリのメンバーで、フィーチャーブランチをマスターブランチにマージしたいのであれば、二つのブランチを選択できます。

オープンソースリポジトリで作業している場合は、リポジトリをフォークし、自分のアカウントの下でGitHubにプッシュする必要があります。その後、「フォーク間の比較」を選択して、自分のマスターブランチを彼らのマスターブランチにマージすることができます。

完了すると、プルリクエストは議論のためにオープンされ、メンテナによる返答を待つだけになります。

その間、メインヘッダーバーの「プルリクエスト」タブを使って、あなたが関与しているすべてのプルリクエストの状態を確認できます。

関連記事: