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


450

ブランチを公式リポジトリにマージするために使用される用語は「プルリクエスト」です。私の変更を公式リポジトリにプッシュするように要求しているようで、これは混乱を招きます。

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


45
大きな生きている木を想像してください。木は頑丈すぎて枝を押し込むことができません。代わりに、枝を幹に引っ張って強化するように頼む必要があります。
ルーク


2
gitihubのようなリモートリポジトリを使用している場合、メンテナがコマンドライン経由でリクエストを実行するために実行する最後のコマンドの1つはgit pushです。それをすべて言う私にとって...(はい、彼らはgit pullを発行してからgit pushを発行するかもしれませんが、pushが要求され、最終的に何が行われているのかです)
ebyrob

60
GitLabはそれらを呼び出しますmerge requests。はるかに明確に、私見。:)
U007D 2016年

回答:


377

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

  • 「プッシュ」とは、ターゲットリポジトリに存在する変更を強制することです(git push)。
  • 「プル」はgit pull、他のリポジトリからそこに存在する変更を取得するターゲットリポジトリです。

「プルリクエスト」とは、変更を取得するようにターゲットリポジトリをリクエストすることです。

「プッシュ要求」は、変更をプッシュするように要求するターゲットリポジトリです。


21
これは私にとっても命名規則の問題でした:D&uは理解をはるかに簡単にしました。銀行での通貨の売買の仕組みと同じです。
nsuinteger 2014

「プル」の定義を再定義する必要があると思います。「ターゲットリポジトリ」、「変更」について混乱するためです。たぶん、「あなたのリポジトリはターゲットリポジトリから変更を取得しています」と言いたいですか?
MrPisarik

9
重要なアイデアは、「プッシュ」/「プル」という用語は、転送される情報を作成する当事者ではなく、転送が行われるかどうかを最終的に決定する当事者を識別するために使用されるということです。
ジェスリーデル2017

3
それはあなたが誰を要求しいるかに依存します、それがあなたのチームであるなら、「プッシュ要求」は、それがリモートレポジトリであるなら、あなたの絶対的に正しいです。
A77 2017

2
会社で中央のプライベートGitサーバーを操作する場合、通常は新しいブランチをそこにプッシュし、コードレビューを要求して同僚にマージすることができます。したがって、このワークフローの「プルリクエスト」は技術的に正しくありませんが、すべての人とGUI設計者が選択した用語であることがわかりました。
Sven

88

プルリクエストを送信するときは、公式のリポジトリオーナーに自分のリポジトリからいくつかの変更をプルするように依頼(リクエスト)します。したがって、「プルリクエスト」です。


2
しかし、所有者は承認後にgitマージを発行します
Jervie Vitriolo 2017年

2
git pullはフェッチとマージを組み合わせたものであるため、プルはすでにマージを意味しています。
Xiong Chiamiov 2018

37

tl; drプッシュを許可されていないため、リポの所有者にリクエストを送信して、プルすることを決定します


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

誰か(おそらく悪であるか、教育を受けていないか、未知であるか)が来てここで言うことができるならば、私はこれをあなたのマスターブランチにプッシュし、すべてのコードを破壊しましたHAHAHA!

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

したがって、コラボレーターではないユーザーがプッシュしようとすると、権限がないことを示すエラーが表示されます。


それでは、他の開発者がプッシュする許可を与えられていないリポジトリにプッシュするにはどうすればよいでしょうか?
すべての人にアクセス権を与えることはできませんが、の人にアウトレット/エントリーポイントを与え、「このコードをリポにプルするようリポの所有者に要求する」ことができます。簡単に言えば、リポジトリをアクセス可能にすることで、フォークを作成できます...自分のフォークで変更を加えます。変更を自分のフォークにプッシュします。自分のリモートリポジトリにある場合:

彼らはフォークからプルリクエストを作成し、(直接プッシュすることはできない)上流レポの所有者がプルリクエストをマージするかどうかを決定します。


また、セミ関連の質問として、Git Pushで正確に何が起こるかをお勧めします。なぜgit pushはgitマージのように見なされないのですか?


4
プッシュとプルの間にパーミッションの違いがあることに気付いていない人にとって、この答えは非常に理にかなっています。
バディ

29

プルリクエスト:私にプルするようにお願いします。


7
ユーザーとして私はそれを自分の視点から見ていますが、「あなたにプッシュすることを要求するの」ではないでしょうか。 I >>> You -あなたは同じ文脈で二度の基準点を変更している... rathernより I >>>> You <<<< Mine
マリン

1
この答えは最も理にかなっています。
シバム2018年

簡単peezyレモンsqueezy
イワンIvković

私はあなたに私のものを引っ張るように要求します。これは元のプロジェクトのフォークからのものであることを理解していますか?またはローカルコピーから?
KansaiRobot

5

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

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

オーナー/共同編集者には権限があります。彼らは引くだけでなく押すこともできます。押せない。

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

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

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


4

これらのアクションで重要なのは、「リクエスト」という言葉です。また、「私の仕事をお願いすることはありますか、承諾しますか?」と考えることもできます。-「プルリクエスト」。

最初は少し混乱しますが、最終的には理にかなっています。


1

これをよりよく理解し、それを永遠に覚えるには、それを描く必要があります。

{リポジトリとして}生きている大きな木を想像してください。ツリーは頑丈すぎて、ブランチをその中に押し込んだり、新しいパーツを追加したりすることができません{新しいブランチの作成またはそこへのコードのプッシュを象徴します}。代わりに、ツリーにブランチをトランクに引っ張るか、またはあなたからの変化。

「プルリクエスト」という用語は、分散された性質に由来します。変更をリポジトリにプッシュするだけではなく(Subversionなどの集中リポジトリで行うように)、変更を個別に公開し、メンテナに変更をプルするよう依頼します。その後、メンテナは変更を確認して、プルを実行できます。

したがって、基本的には、貢献したいリポジトリへの書き込みアクセス権を持つ人に「リクエスト」し、リポジトリから「プル」します。

プルリクエストを使用すると、GitHub上のリポジトリのブランチにプッシュした変更を他の人に知らせることができます。プルリクエストが開かれると、潜在的な変更について共同編集者と話し合って確認し、変更がベースブランチにマージされる前にフォローアップコミットを追加できます。 Githubの説明


0

私がいることを考えたいので、私はその愚かな用語を考えて、私はあなたにPUSHのものにしたいと私addingsを引っ張るために他の誰かを求めてその逆を考えていません。したがって、PUSH REQに変更する必要があります。私が活躍しているからです。矢は私から始まり、反対側のグーフィーではなく、反対方向に進みます。私見では。


0

このように考えてください。 ローカルリポジトリリモートリポジトリ。

  • ローカルからプッシュするとき。(git push)-言い換えると、リモートリポジトリはyou(Local)からコードをプルしています。

あなたは何かを要求しています。だから、あなた自身に尋ねて、

  • リモートリポジトリからコードを取得しますか?- プルリクエスト。

プッシュリクエストができないことを区別することが重要だと思います。プッシュできてそれができる場合、それはリクエストではなく、マスターとマージされます。gitハブリポジトリへのプルリクエストは、コードのマージを要求することです。
ジェームズ

これは例として使用しています。もちろん、Githubはコードをプッシュできます。しかし、私は私の答えを編集します。
Jin Lim、

0

これらの回答のほとんどは質問に対応していると思います は「プルリクエスト」とはどういう意味ですか?または「プッシュリクエスト」とはどういう意味ですか?OPの質問ではなく、なぜプッシュリクエストではなくプルリクエストと呼ばれるのですか?

通常、この種の質問の置き換えは受け入れられますが、この場合、OPがこれらの置き換えの質問に対する答えを知っていることは明らかであるため、それらに答えることはあまり役に立ちません。

用語を作り出したGitHubの人々だけが確実に知っています。ただし、この用語の選択は、「外部からリポジトリへの変更」という現象に関する次のような見方を反映していることは明らかです。メンテナーがアクション(プル)を実行します。

ただし、リクエストもアクションであり、そのアクションの実行者はメンテナではなく、サブミッタ(さらに多くのアクション、つまり作業を行った人)です。したがって、「プルリクエスト」という用語はは、エージェントが誰であるかについて混乱を招きます。最終的に、要求の再帰的な性質が原因で混乱が生じます。要求は、1次エージェントによるアクションであり、2番目のエージェントによる将来のアクションに対する要求です。

状況は、「私たちが家を建てた」(「私たちは誰かにお金を払って家を建てた」の代わりに使用された)のような現在一般的な言語構造に非常に似ています。管理上の社会的役割を果たす二次エージェント。

このことから、用語の選択の理由は、管理業務が一流の労働であるという見方を正当化することであると結論付けるかもしれません。さらに、この用語の選択についての混乱の理由は、非管理職の労働者が当然異なる視点を持っているためかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.