技術ノート Linux Git プル リクエストとは何ですか? どのように使用しますか?

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

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

プル リクエストは、Github や Gitlab などのオンライン Git サービスの機能です。これらを使用すると、リポジトリにアクセスできない場合でも、誰でも変更の追加をリクエストできます。これらがどのように機能するか、およびオープンソース コラボレーションにそれらを使用する方法について説明します。

プルリクエストは何をするのですか?

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

どう思われようとも、

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

ツールとしては完全に分散化されたシステムです。これが意味するのは、Github.com 上のリポジトリとローカル マシン上のリポジトリは互いに何ら変​​わらないということです。リポジトリで作業するために Github に接続しているのではなく、コードを Github からローカル リポジトリにコピーし、そこで作業しています。

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

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

 git push

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

ただし、これはコミットをプッシュする権限 (通常はパスワードまたは SSH キーで構成されている) を持っている場合にのみ機能します。これは、リポジトリを管理する組織のメンバーにのみ配布されます。それ以外の場合は、誰でも Git 履歴を変更できる可能性があります。組織のメンバーではない場合、変更を加えたい場合はどうすればよいでしょうか?

Git リポジトリを更新する 2 番目の方法があります —

 git pull

。おそらく、同僚がプッシュされる変更を加えるたびに、これを頻繁に行うでしょう。この場合、リモート リポジトリからコミットを取得し、ローカル リポジトリと同期します。

ただし、Git は分散化されているため、実際にはリポジトリとリモート リポジトリの間に違いはありません。実際に走らせることもできる

git pull

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

プル リクエストは、リモート サーバー (およびその保守担当者) に、監視してリモート リポジトリと統合してもらいたい更新されたコミットがあることを伝えるだけです。変更を受け入れると、リモート リポジトリが実行されます。

 git pull

ローカル リポジトリに対して、認証された SSH キーを持たずにコードを統合します。

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

オープンソース コラボレーションのバックボーン

プル リクエストはオープン ソース ライブラリに対して常に使用されます。結局のところ、オープンソースの理由の多くは、コードが有用であれば、どんな開発者でもプロジェクトに貢献できるということです。

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

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

git

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

それらのいずれかをクリックすると、リクエスターによって作成されたコメントと、それに関連付けられたコミットを表示できます。

リポジトリの管理者であれば、リクエストを確認してマージできます。または、話し合う必要がある問題がある場合は、コメントを残して一緒にコードに取り組むことができます。これが、Github のようなパブリック スペースがオープンソース コラボレーションに最適である大きな理由であり、ドキュメントの文言を変更するなどの単純な作業であっても、誰でも共同で行うことができます。

プルリクエストは課題とは異なります。問題追跡は、Github などの多くのサービスの機能であり、簡単なバグ修正や新機能のパブリック コラボレーションを可能にします。基本的に、各問題にはメンテナとコミュニティが議論できるトピックがあります。例えば、

 dotnet/csharplang

は、プログラミング言語としての C# がどのように設計されているかについて議論するための公式リポジトリです。イシューにアクセスすると、多くの人が言語の将来のイテレーションのコンセプトについて議論していることがわかります。

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

すべてのプル リクエストは拒否されるか、リポジトリ内のコード変更に直接つながるかのいずれかです。問題は、開発の進捗状況とどのバグを修正する必要があるかを追跡するための単なる手段です。

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

プルリクエストの作成

繰り返しになりますが、その正確な手順は使用しているサービスによって異なりますが、ほとんどのオープンソース コラボレーションは Github 上で行われるため、その手順を示します。

リクエストを行うリポジトリに移動し、[プル リクエスト] タブの [新しいプル リクエスト] をクリックします。

ここには 2 つの選択肢があります。リポジトリのメンバーで、feature ブランチを master ブランチにマージしたい場合は、2 つのブランチを選択できます。

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

完了すると、プル リクエストは議論できるようになり、メンテナーからの返答を待つだけになります。

それまでの間、メイン ヘッダー バーの [プル リクエスト] タブで、関与しているすべてのプル リクエストのステータスを確認できます。

「 Git プル リクエストとは何ですか? どのように使用しますか?」に関するベスト動画選定!

【Git入門】#5 プルリクエストを作成しよう
プルリクエストの流れ