62

GitHub が提出物をマージするために「プル リクエスト」と呼ぶ理由が気になります。

私の理解でgit pullは、すべての変更をリモート リポジトリから現在の作業ブランチにプルします。次に、これらの変更を でマージしFETCH_HEADます。( Gitプル)

見てみましょgit pushう...プッシュは、実際にはコミットされた変更をリポジトリにプッシュします。Git リポジトリでやっていることではありませんか? コードをマージする「リクエスト」を送信しますか? では、なぜ「プッシュ リクエスト」と呼ばれないのでしょうか。

4

6 に答える 6

75

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

于 2013-02-11T17:09:18.280 に答える
9

プルリクエストは、リポジトリへのプッシュアクセスを持たない寄稿者が、プロジェクトに含めるためのコードを送信したい場合です。たとえば、githubにプロジェクトがあり、コミット権限を持つのはあなただけで、プロジェクトにコードを含めたい場合はどうすればよいですか?

githubリポジトリをフォークして、作業用の新しいブランチを作成します。現在の実装に満足したら、git pull自分のブランチへのリクエストをリポジトリに送信します(直接プッシュする権限がないため)。いつgit pull、どのブランチをプルするか、どこにプルするかを選択できます。おそらく、自分のブランチに直接プルするのではなくmaster、コードを調べるために他のブランチにプルする必要があります。

gitブックには、このようなさまざまな作業フローに関する優れたセクションがあります。

于 2013-02-11T17:08:57.557 に答える
4

パッチを他の人に送信するときは、その人に変更を自分のリポジトリにマージしてもらいます。現在、プルはフェッチとマージです。したがって、その人があなたの変更をプルした場合、彼もそれをマージします。これはあなたが望むものです。

于 2013-02-11T17:08:37.340 に答える
2

プルリクエストを送信するときは、リポジトリの所有者に、ローカルリポジトリで変更をプルする(つまり、それらをマージする)ように依頼します。次に、そのリポジトリは(を介してgit push)公開リポジトリに公開されますが、これは暗黙的に示されます。

誰もあなたの変更をプッシュせず、プルするので、これを「プッシュリクエスト」と呼ぶことはできません。

于 2013-02-11T17:08:49.113 に答える
1

プライベート リポジトリからパブリック リポジトリにコミットをプッシュします。ただし、他の人のリポジトリに変更を強制することはできないため、公開リポジトリから他のリポジトリにプルするように要求します。

于 2013-02-11T17:09:11.063 に答える
0

メンテナーでない場合は、git リポジトリに直接プッシュしないでください。

したがって、コードをそこに入れたいときは、ブランチを作成してどこかに置き、次のように言います。

ねえ、これが私のブランチです。メインブランチに引っ張ってください!

それ以外の:

ねえ、ここが私のブランチです。プッシュさせてください!

命名の鍵は、最終的な行動を行うのはあなたではないということです。メンテナは最後のステップを行います。したがって、ブランチを直接プッシュするのではなく、ブランチをプルするのはメンテナーです。

于 2022-01-13T03:49:14.123 に答える