用于合并分支和官方存储库的术语是“拉取请求”。这很令人困惑,因为我似乎是在请求将我的更改推送到官方存储库。

为什么它被称为拉请求而不是推请求?


当前回答

我想把一些东西推到别人的回购中。

我没有推(或拉)的权限。

所有者/合作者拥有权限。它们既能推又能拉。我推不动。

所以,我要求他们执行我的拉——这间接地意味着我要求他们接受我的推。

所以,没有推送请求。只是为了拉一把。并接受一个推动。

因此,这是一个“pull”请求。而不是“push”请求。

其他回答

我想把一些东西推到别人的回购中。

我没有推(或拉)的权限。

所有者/合作者拥有权限。它们既能推又能拉。我推不动。

所以,我要求他们执行我的拉——这间接地意味着我要求他们接受我的推。

所以,没有推送请求。只是为了拉一把。并接受一个推动。

因此,这是一个“pull”请求。而不是“push”请求。

如果您在存储库中有一个代码更改,并希望将其移动到目标存储库,那么:

“Push”是你强制目标存储库中出现的更改(git Push)。 “Pull”是目标存储库抓取你的更改,以呈现在那里(git从另一个repo拉)。

“拉取请求”是您请求目标存储库获取您的更改。

“推送请求”将是目标存储库请求您推送更改。

git拉取意味着我从存储库中拉取。

git推送意味着我正在推送到存储库。

一个拉取请求自然会随之而来,我在问回购所有者我可以从他们的存储库中拉取,对吧?

错误,拉请求意味着我请求(本质上)推送到存储库。

这背后的假定逻辑是,存储库现在本质上是命令的所有者。但如果是这种情况,那么从存储库中检索代码将通过git push实现。因为如果存储库是所有者,那么他们就全权负责将代码推送给您。但是没有。不一致是关键。

公认的答案是,“push”听起来像是您在强迫存储库进行更改,但这毫无意义,因为您看不到它是一个REQUEST。请求,就其本质而言,并不是强加于人的。

为了更好地理解它并永远记住它,你需要描绘它。

想象一个大的、活的树(作为您的存储库)。这棵树太坚固了,你不能将一个分支推入或添加一个新部分(象征创建一个新分支或你将代码推入其中),相反,你必须要求这棵树将一个分支拉入主干或从你那里获得更改。

术语“拉请求”来自于分布式的本质。而不是仅仅将您的更改推入存储库(就像您使用集中式存储库所做的那样,例如Subversion),您将单独发布您的更改,并要求维护者拉入您的更改。然后维护者可以查看更改并执行所谓的拉取。

所以你基本上是“请求”那些对你想要贡献的回购有写权限的人,从你的回购中“拉”出来。

Pull请求可以让你告诉其他人你已经推送到GitHub存储库分支的更改。一旦打开了拉取请求,您就可以与协作者讨论和检查潜在的更改,并在将更改合并到基本分支之前添加后续提交。 Github的解释

这样思考。本地存储库vs远程存储库。

当你从本地推送。(git push) -换句话说,远程存储库正在从您(本地)拉代码。

你在提出要求。所以,问问你自己,

你想要远程存储库从你拉代码吗?-拉请求。