Git 拉请求与合并请求

Git 拉请求与合并请求,git,github,gitlab,Git,Github,Gitlab,拉请求和合并请求之间的区别是什么 在GitHub中,它是一个拉请求,而在GitLab中,它是一个合并请求。那么,这两者之间有区别吗?它们是相同的特性 合并或拉取请求在git管理应用程序中创建,并要求指定人员合并两个分支。GitHub和Bitbucket等工具选择名称pull请求,因为第一个手动操作将是拉取功能分支。GitLab和Gitorious等工具选择名称合并请求,因为这是受让人请求的最终操作。在本文中,我们将它们称为合并请求 -- GitLab的功能相当于GitHub的功能。这两种方法都是

拉请求和合并请求之间的区别是什么


在GitHub中,它是一个拉请求,而在GitLab中,它是一个合并请求。那么,这两者之间有区别吗?

它们是相同的特性

合并或拉取请求在git管理应用程序中创建,并要求指定人员合并两个分支。GitHub和Bitbucket等工具选择名称pull请求,因为第一个手动操作将是拉取功能分支。GitLab和Gitorious等工具选择名称合并请求,因为这是受让人请求的最终操作。在本文中,我们将它们称为合并请求

--

GitLab的功能相当于GitHub的功能。这两种方法都是将更改从另一个分支或分支拉入您的分支,并将更改与现有代码合并。它们是代码审查和更改管理的有用工具

讨论了命名功能的不同之处:

合并或拉取请求在git管理应用程序中创建,并要求指定人员合并两个分支。GitHub和Bitbucket等工具选择名称pull请求,因为第一个手动操作将是拉取功能分支。GitLab和Gitorious等工具选择名称合并请求,因为这是受让人请求的最终操作。在本文中,我们将它们称为合并请求


“合并请求”不应与命令混淆。“拉请求”也不应与命令混淆。在拉取请求和合并请求中,
git
两个命令都在后台使用,但合并/拉取请求所指的主题比这两个命令要广泛得多。

在我看来,它们意味着相同的活动,但从不同的角度来看:

考虑一下,Alice对存储库A进行了一些提交,它是从Bob的存储库B派生出来的

当Alice想将她的更改“合并”到B中时,她实际上希望Bob从A中“拉”出这些更改

因此,从Alice的角度来看,它是一个“合并请求”,而Bob将其视为一个“拉请求”。

GitLab 12.1(2019年7月)引入了一个区别:

“”

在讨论、规划和解决机密问题(如安全漏洞)时,由于Git存储库是公开的,因此开放源代码项目要保持高效尤其具有挑战性

从12.1开始,现在可以使用“创建机密合并请求”按钮在简化的工作流中解决公共项目中的机密问题,这有助于您在项目的私有分支中创建合并请求

请参阅中的“”

GitHub中也存在类似的功能,但涉及到一个特殊的私有fork的创建,称为“


将添加审阅者,这是
之前。

如前面的答案所述,两者的作用几乎相同。就我个人而言,我喜欢git rebase和合并请求(就像在gitlab中一样)。它减轻了审阅者/维护者的负担,确保在添加合并请求时,功能分支包括创建功能分支后在主分支上完成的所有最新提交。下面是一篇非常有用的文章,详细介绍了rebase:
冲突管理方面存在细微的差异。如果发生冲突,Github中的pull请求将导致目标分支上的合并提交。在Gitlab中,当发现冲突时,所做的修改将在分支上的合并提交上进行

“GitLab通过在源中创建合并提交来解决冲突 未自动合并到目标分支的分支。此 允许在更改之前检查和测试合并提交 合并,防止意外更改进入目标分支 没有审查或破坏构建。”


GitHub是否在发出拉请求时创建中间/临时分支(不可见)?我缺少什么?pull=fetch+merge。如果最后一个操作是merge,那么第一个操作必须是fetch.MR。直到我读了你对它的第一个操作的解释,我才明白拉请求对我来说是没有意义的,而当我第一次读到它时,我就明白了合并请求的含义。“您好,您能将此代码合并到主分支吗?”vs“您好,您能将此代码拉到不可见分支吗”-这里有一个明显的赢家。@Granitosaurus同意。作为git的初学者,pull请求绝对不是我所期望的。当我开始使用Gitlab时,合并请求马上就有了意义。我认为“拉入请求”是从这样一个角度出发的,即你要求拥有你目标分支的人“拉入”你对你所从事的分支所做的任何承诺。我怀疑这个术语是否真的来自于命令的名称,以及其背后的概念。我认为,对git的工作原理有了更好的理解,“pull”术语就更有意义了,而对于没有git背景的人来说,“merge”概念更直观。每个人都知道,至少凭直觉,“合并”应该是什么意思,但拉和推是行话。合并不应该是添加新功能的开发人员的责任吗?如果开发人员a在feature_分支中添加了一个功能,他应该将主分支合并到他的分支上,在创建合并请求之前解决所有冲突并测试它?是的,但仍然有一个快速的合并,之后必须有人进行合并,才能将代码放到主分支上。事实上,我认为在全职开发人员的团队中,如果功能开发人员也进行合并,这可能是最好的,但对于他们来说,等待有人首先审查他们的PR可能是有用的。通常情况下,代码必须在没有