为什么git'draw请求'不被称为'推送请求'?

Ale*_*íaz 369 git github pull-request

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

为什么称为拉取请求而不是推送请求?

Sve*_*ven 309

如果您的存储库中有代码更改,并希望将其移动到目标存储库,则:

  • "推送"是您强制目标存储库(git push)中存在的更改.
  • "Pull"是目标存储库,用于获取您的更改(git pull来自其他repo).

"拉取请求"是您请求目标存储库取悦您的更改.

"推送请求"将是请求您推送更改的目标存储库.

  • 对于我来说,这也是一个问题,因为命名惯例:D&u让它变得更加简单易懂.想想它与银行买卖货币的方式相同. (18认同)
  • 直观地说,“push”=“嘿,我要推动这个,我不在乎你怎么想”。`pull request` = “如果你觉得可以的话,你能拉一下吗?我正在请求!!” (7认同)
  • 关键的想法是"推"/"拉"术语用于识别最终决定转移是否发生的一方,*不是*创建转移信息的一方. (5认同)
  • 这取决于您请求谁,如果是您的团队,则“推送请求”更有意义,如果它是远程存储库,则绝对正确。 (3认同)
  • 在公司中使用中央私有 Git 服务器时,通常您可以向其推送一个新分支,并请求您的同事进行代码审查和合并。因此,此工作流的“拉取请求”在技术上并不正确,但事实证明它是每个人和 GUI 设计人员选择的术语。 (3认同)
  • 反过来还是会更好。据我所知,没有人凭直觉就能猜对。 (2认同)

JB *_*zet 76

当您发送拉取请求时,您要求(请求)官方回购所有者从您自己的回购中提取一些更改.因此"拉动请求".

  • git pull 是 fetch 和 merge 的结合,所以 pull 已经意味着合并。 (4认同)
  • 但所有者将在批准后发布git merge (2认同)

Hon*_*ney 30

tl; dr因为我不被允许推动,我只是很好地向回购所有者提出请求,所以他们决定拉


谁可以将代码推送到存储库?

如果任何人(可能是邪恶的或未受过教育的或未知的)能够来这里说,我只是把它推到你的主分支并搞砸了你所有的代码HAHAHA!

当然你不希望他那样做.默认设置安全网,因此没有人可以推送您的回购.您可以 将其他人设置为协作者,然后他们就可以推送.您可以向您信任的人提供此类访问权限.

因此,如果您不是合作者并尝试推送,您将收到一些错误,表明您没有权限.


那么其他开发者如何推动回购他们没有获得推动权限?
您不能授予所有人访问权限,但您希望为其他人提供一个出口/入口点,以便他们可以向回购权所有者发出" 将此代码提取到回购"的请求.简单地说,通过使repo可访问,他们可以分叉...在他们自己的fork中进行更改.他们的更改送到自己的分支.一旦它进入他们自己的远程仓库:

他们从他们的fork 发出pull请求,repo的所有者将决定是否合并pull请求.


另外一个半相关的问题我建议阅读git push中究竟发生了什么?为什么git push不像git merge那样考虑?

  • 对于那些没有意识到推拉之间存在许可差异的人来说,这个答案很有意义. (4认同)

hep*_*dad 24

拉请求:我请求你来我的.

  • 我作为一个用户从我的角度来看它,不应该是"我要求把它推给你?" `I >>>你` - 你在同一个环境中改变了两次参考点......而不是"我>>>>你<<<<我的` (7认同)

小智 6

我想把一些东西推送到别人的仓库。

我没有推(或拉,就此而言)的许可。

所有者/合作者具有权限。他们可以拉也可以推。我推不动。

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

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

因此,“拉”请求。而不是“推送”请求。


小智 5

“请求”一词是这些操作的关键。您也可以将其视为“我请求您接受我的作品,您接受吗?” - “拉取请求”。

起初有点令人困惑,但最终还是有意义的。


小智 5

恐怕这些答案中的大多数都解决了“拉取请求”是什么意思的问题?“推送请求”是什么意思?而不是 OP 的问题:为什么将其称为拉取请求而不是推送请求?

通常这种替换问题是可以接受的,但在这种情况下,很明显 OP 知道这些替换问题的答案,因此回答它们并不是很有帮助。

只有 GitHub 上创造这个词的人肯定知道。然而,这个术语选择似乎很明显反映了类似于以下关于“更改从外部进入存储库”现象的观点:维护者执行操作(拉)

然而,一个请求也是一个动作,那个动作的执行者不是维护者而是提交者(他做了更多的动作,即工作)。因此,术语“拉取请求”会造成对代理是谁的混淆。由于请求的递归性质,最终会出现混淆:请求既是主要代理的操作,也是第二代理对未来操作的请求。

这种情况非常类似于现在常见的语言结构,例如“我们建造了我们的房子”(用于代替“我们花钱请别人来建造我们的房子”),因为主要行动的责任从明显的原始代理人转移到履行管理社会角色的二级代理人。

可以由此得出结论,术语选择的原因是管理工作是一等劳动的观点的合法化。此外,对这个术语选择感到困惑的原因可能是非经理员工自然有不同的观点。