62

我很好奇为什么 GitHub 调用提交来合并,“拉取请求”。

据我了解,git pull会将所有更改从远程存储库中提取到当前工作分支中。然后将这些更改与FETCH_HEAD. ( Git 拉取)

所以看看git push......推送实际上会将提交的更改推送到存储库。这不就是你对 Git repo 所做的吗?提交“请求”以合并您的代码?那么为什么不将其称为“推送请求”呢?

4

6 回答 6

75

术语“拉取请求”来自于有多少开源项目自己组织起来的分布式特性。而不是仅仅将您的更改推送到存储库(就像您对集中存储库所做的那样,例如使用 Subversion),您正在单独发布您的更改并要求维护人员拉入您的更改。然后维护人员可以查看更改并执行拉取操作。

于 2013-02-11T17:09:18.280 回答
9

拉取请求是指没有对存储库的推送访问权限的贡献者想要提交代码以包含在项目中。例如,如果您在 github 上有一个项目,并且您是唯一拥有提交权限的人,而我想在您的项目中包含代码,我该怎么办?

我将 fork 你的 github 存储库并为我的工作创建一个新分支。一旦我对当前的实现感到满意,我就会向git pull我的分支发送一个请求到你的存储库中(因为我无权直接推送)。当您这样做时,git pull您可以选择要拉到哪个分支以及要拉到哪里。也许您不想直接拉入您的master分支,而是拉入其他分支来检查代码。

git book中有一个很好的部分介绍了这样的不同工作流程。

于 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 repo。

所以,当你想把代码放进去时,你创建一个分支,把它放在某个地方,然后说:

嘿,这是我的分支,请它拉进主分支!

代替:

嘿,这是我的分支,请让我

命名的关键是,你不是做最后动作的人。维护者执行最后一步。所以是维护者入你的分支,而不是你直接推送你的分支。

于 2022-01-13T03:49:14.123 回答