web-dev-qa-db-ja.com

Gitでプルリクエストを送信する方法

最近、SVNからGitに移行しました。 LANネットワークの1台のマシンにベアリポジトリをセットアップし、他のマシンにクローンを作成しました。誰もが変更とコミットを行うとき、私たちは彼がプルリクエストをベアレポジトリに(送信または電子メールまたは他の方法で)送信した後、変更を行ってベアリポジトリにプルするようにしますGitHub)。

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

56
jimy

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

ネイティブGit

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

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

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

GitHubプルリクエスト

GitHub Webサービス を使用する場合、 Pull Request はフル機能のインタラクティブなコラボレーションツールです。 GitHubプルリクエストには以下が含まれます。

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

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

結論

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

  • GitHubを使用します。これは間違いなく最小限の労力で行われますが、プロジェクトがパブリックでない場合は、プライベートリポジトリをホストするためにGitHubに支払う必要があります。一部の人々はこの選択に不安を感じるかもしれません。
  • Gerrit を使用します。 Gerritは、GitHubで利用可能な機能に類似した多くの機能を提供する、ダウンロード可能なオープンソースのサーバープログラムです。特に、コードの共同レビューに適しています。
  • つかいます git request-pullおよびメーリングリスト。この方法を使用するには、メーリングリストのメッセージを置き忘れたり、誤って処理したりするのが簡単であるため、エンジニアによるより多くの訓練が必要です。この方法に関連する中央の説明責任はありません。
77
Greg Hewgill

「プルリクエスト」という用語は、notgithub固有の用語です。

Git request-pullコマンドがあります。詳細についてはこちらをご覧ください: http://linux.die.net/man/1/git-request-pull

いくつかの詳細な説明については、いくつかのグーグルの外観を保存してください:

これは、新機能のところではありません。

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

57
Jens

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

10