57

最近、SVN から Git に移行しました。LAN ネットワーク内の 1 台のマシンにベア リポジトリをセットアップし、他のマシンにクローンを作成しました。誰かが変更とコミットを行った場合、プル リクエストをベア リポジトリに送信して (伝えるか、電子メールで送信するか、またはその他の方法で)、変更を確認してベア リポジトリにプル リクエストを送信してもらいたいと考えています (上で動作するのと同じ)。 GitHub)。

インターフェイスをインストールする必要がありますか、それとも Git 自体にいくつかのコマンドがありますか?

4

3 に答える 3

78

Git (ソフトウェア) と GitHub (Web サービス) には「プル リクエスト」という概念がありますが、残念ながらまったく同じものではありません。

ネイティブ Git

ネイティブ Gitコマンドには、次の 1 文の説明をrequest-pull含む非常に短いマニュアル ページがあります。

2 つのコミット間の変更を標準出力に要約し、生成された要約に指定された URL を含めます。

これは、メーリング リストへの投稿に適した変更の短い要約を生成する、かなり低レベルのコマンドです。他のユーザーは、この「プル リクエスト」で公開された URL を使用して、変更を自分のリポジトリに手動でプルできます。

GitHub プル リクエスト

GitHub Web サービスを使用する場合、プル リクエストは完全な機能を備えたインタラクティブなコラボレーション ツールです。GitHub プル リクエストには次のものがあります。

  • 個々のコミットの概要だけでなく、より詳細な変更の説明
  • プロジェクトを視聴することを選択したユーザーに自動的に送信される通知
  • 提案された変更について他の人がコメントできるオンライン レビュー インターフェイス
  • コミットに関する会話を記録するためのディスカッション コメント
  • プルリクエストを一元管理して紛失しないようにする

これら 2 つの機能の相対的な有用性について、Linus が独自の意見を持っていることは注目に値します。

結論

上記の 2 つの「プル リクエスト」機能は、精神的には似ていますが、実装はまったく異なります。特に、このgit request-pullコマンドを使用して GitHub で新しいプル リクエストを作成することはできません。「プル リクエスト」タイプの機能をサポートする場合は、いくつかの選択肢があります。

  • GitHub を使用します。これは間違いなく最小限の労力で済みますが、プロジェクトが公開されていない場合は、プライベート リポジトリをホストするために GitHub に料金を支払う必要があります。この選択に満足できない人もいるでしょう。
  • ゲリットを使用します。Gerrit は、GitHub で利用できるものと同様の多くの機能を提供するダウンロード可能なオープンソース サーバー プログラムです。これは、共同コード レビューに特に適しています。
  • git request-pullとメーリングリストを使用します。この方法を使用すると、メーリング リストのメッセージを置き忘れたり、扱いを誤ったりしやすいため、エンジニアはより多くの訓練を受ける必要があります。この方法に関連する中央の説明責任はありません。
于 2011-06-04T07:19:37.180 に答える
57

「プルリクエスト」という用語は、github 固有の用語ではありません。

git request-pull コマンドがあります。詳細については、http: //linux.die.net/man/1/git-request-pullを参照してください。

さらに詳細な説明が必要な場合は、以下を参照してください。

これは新しい機能ではありません。

編集:この代替回答は、@Greg Hewgill によって最初に受け入れられた回答が書き直される前に作成されました。これは私が探していた答えであり、必ずしも github を使用していないユーザーに対してプル リクエストを行うことについての質問に適していると思います (はい、git を使用しているすべての人が常に github を使用しているわけではありません)。元の回答が書き直されてこの違いが明確になったので、記録のために最初に投稿した方法でこの回答を残します。

于 2012-05-15T17:07:40.460 に答える
10

これを行う「git の方法」は、すべての開発者が独自のパブリック ベア リポジトリ (すべての読み取りアクセス、開発者自身の書き込みアクセス) をサーバー上に「オリジン」として持つことです。また、一部またはすべての開発者が書き込みアクセス権を持つ追加の「トランク」(または「安定」または任意の名前) の裸のリポジトリが必要な場合。開発者は自分のリポジトリをパブリック リポジトリにミラーリングし、他の開発者からプルします。そうすれば、まだ機能しないものをパブリック リポジトリにプッシュしても心配する必要はありません。(開発者は、あなたからテスト ブランチにプルして、それが機能するかどうかを確認できます。) 安定した標準ブランチがある場合は、それを「トランク」リポジトリにプッシュできます。

于 2011-06-06T08:16:23.830 に答える