web-dev-qa-db-ja.com

gitの「プルリクエスト」が「プッシュリクエスト」と呼ばれないのはなぜですか?

ブランチを公式リポジトリとマージするために使用される用語は「プルリクエスト」です。私が自分の変更を公式リポジトリにプッシュすることを要求しているように見えるので、これは紛らわしいです。

なぜプッシュリクエストではなくプルリクエストと呼ばれるのですか?

325

リポジトリのコードを変更し、それをターゲットリポジトリに移動したい場合は、次のようにします。

  • 「プッシュ」は、ターゲットリポジトリ(git Push)に存在する変更を強制します。
  • "プル"はあなたの変更がそこに存在するようにするためのターゲットリポジトリです(他のリポジトリからのgit pull)。

「プルリクエスト」とは、あなたがあなたの変更を掴むようにターゲットリポジトリに要求することです。

「プッシュ要求」は、あなたがあなたの変更をプッシュすることを要求するターゲットリポジトリです。

271
Sven

あなたがpull requestを送るとき、あなたはあなた自身のリポジトリからいくつかの変更を引き出すように公式のリポジトリ所有者に依頼しています。したがって、「プルリクエスト」です。

70
JB Nizet

tl; dr私はプッシュをすることは許されていないので、リポジトリ所有者にうまくリクエストを出すので、彼らはプルすることにします。


誰がコードをリポジトリにプッシュできますか?

誰かが(おそらく邪悪な、教育を受けていない、または未知の人が)来ることができるはずです ここで私はちょうどあなたのマスターブランチにこれをプッシュし、あなたのすべてのコードを混乱させました

きっとあなたは彼にそうさせたくないのです。デフォルトではセーフティネットが設定されているので、誰もあなたのレポにプッシュすることはできません。あなたは can 他の人を共同編集者として設定します 、そしてプッシュできます。あなたはあなたが信頼する人々にそのようなアクセスを与えるでしょう。

あなたが共同編集者ではないのにPushを実行しようとすると、権限がないことを示すエラーが表示されます。


それでは、他の開発者はどのようにしてプッシュを許可されていないレポにプッシュできますか?
全員にアクセス権を付与することはできませんが、 others にコンセント/エントリポイントを付与して、彼らがリポジトリ所有者に pull にリクエストを送信できるようにします。このコードをリポジトリに追加します。レポジトリをアクセス可能にすることで簡単に言えば、フォークすることができます...自分のフォークで変更を加えます。 プッシュ - 自分のフォークへの変更。自分のリモートレポジトリに入ったら:

彼らは pull request を彼らのforkから作り、上流のリポジトリの所有者(あなたは直接プッシュすることはできません)がpull requestをマージするかどうかを決定します。


また、私が読むことをお勧めする半関連の質問です git pushでまさに何が起こりますか?git pushがgit mergeと同じように考えられないのはなぜですか?

27
Honey

プルリクエスト:私リクエストあなたにプル私のもの。

21
hepidad

誰かのリポジトリに何かをプッシュしたい。

プッシュ(またはプル)の権限がありません。

所有者/共同編集者には権限があります。プッシュだけでなくプルもできます。プッシュできません。

だから、私は彼らに私からのプルを実行するよう要求します-これは間接的に私がプッシュを受け入れるように要求していることを意味します。

したがって、プッシュの要求はありません。プルのみ。そして、プッシュの受け入れのため。

したがって、「プル」リクエスト。 「プッシュ」リクエストではありません。

1
user11705414

それがこれらの行動の鍵となるのは「要求」という言葉です。あなたはそれを「私はあなたに私の仕事を受けるように要求します、あなたは受け入れますか?」と言っていると考えることもできます。 - "プルリクエスト"。

最初は少し混乱しますが、最終的には意味があります。

1
Kyzer