在主服务器上启动请求请求或执行本地合并提交是否更好?


12

我使用GitHub已经有一段时间了,通常我会先推送功能分支,然后启动我自己合并的Pull Request。我发现它帮助我跟踪合并分支的位置。

但是最近我越来越多地阅读了有关Git的工作原理,我意识到我可以在合并分支时使用merge-commits进行引用。

因此,将功能分支合并到master中时,我该怎么办:在master上
执行merge-commit,然后将其推送到上游,或者在本地分支中推送并启动Pull Request?

我已经阅读了两人团队的请求介绍-合并我自己的请求吗?并且请告诉我工作,2人流量大的一个项目我应该开拉请求从一个分支官方回购或我的叉子?但他们似乎都无法回答我的要求。


2
您觉得这些答案到底缺少什么?
RubberDuck

第一个从拉请求应该被同行评审的意义上谈论它。第二个提供工作流程。第三个甚至没有关系。
Ashhar Hasan 2015年

1
我正在从“ 最佳实践”或“ 如何保持良好的git历史记录”的角度进行研究。
Ashhar Hasan 2015年

1
合并PR时,是通过合并本地分支来实现的。这使我可以确保合并完全适用,并可以在发布结果之前重新运行测试。GitHub的Pull Requests只是此工作流程的一种形式,Git本身没有PR的概念。
阿蒙(Amon)

2
当PR合并时,它将在master上生成合并提交,因此我认为这与git历史没有任何区别。因此,除了您在命令行和Github UI之间的个人偏好之外,我认为没有任何理由使用一个或另一个。
Ixrec 2015年

Answers:


15

git-merge机制:在master上
使用git merge featurewhile会将分支合并feature到git历史记录中,并在git历史记录中master产生一个merge-commit(如果分支不能快速转发)。要强制执行merge-commit,请在中使用--no-ff选项merge

合并请求请求机制:
当我们在GitHub上启动请求请求时,它会创建一个供GitHub Issue人们在合并之前在PR中进行讨论并讨论提交的地方。当PR在GitHub上合并时,它的作用与完全相同git merge feature

我该怎么办?
因此,就历史而言,两者之间没有区别。
就贡献而言,在两种情况下,您的贡献者将没有任何不同。它们是相同的(减去漂亮的小聊天)。

最佳实践:
我无法找到最佳实践,但是逻辑表明,如果存储库中只有一个人,则PR并没有太大帮助。

@lxrec和@amon帮助我得出了这个结论。


5
提示:git merge如果可以执行“快进”,则可能不会记录合并提交。要强制执行合并提交,可以添加--no-ff选项。
阿蒙(Amon)

我更喜欢在本地执行git-merge,而不是在githuib.com上进行,如果我必须在github.com上进行任何此类操作,我宁愿不直接在master分支上做,我宁愿选择非master分支,在可供生产之前,将其设置为暂存模式。
Ciasto piekarz

5

正如Ashhar所说,从技术和历史角度看,两者没有区别。对于团队规模较小的项目,我更喜欢直接合并,而不是额外的创建PR的步骤。但是,当一项功能需要审阅/反馈时,或者当它是WIP时,将有多个人在使用该功能,我倾向于打开PR,并在PR的描述中添加任务列表。

请注意,git merge如果没有对master进行任何更改,则可能会使用快进,因此您可能要使用git merge --no-ff。我倾向于不这样做。

因此,总而言之,仅在需要讨论时才使用PR。否则,直接合并即可。


1
还值得一提的是,关于拉取请求的讨论和反馈可能来自自动化来源以及团队成员。如果设置了CI服务器,则它可以提供构建和测试结果,因此您永远不会合并破坏主服务器上构建的内容。
埃里克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.