从本地分支向远程主分支发出git请求拉取

34

我非常喜欢GitHub拉取请求方法,可以用于分布式软件开发的协作。它允许进行讨论和代码审查。

我的目标是在不使用GitHub的情况下,在我们的存储库内使用相同的流程。我不想要分叉项目。

让我们假设,我在本地开发了一个很棒的功能。我想向我的主分支发起拉取请求,以强制进行代码审查。

  A---B---C feature/awesomeFeature
 /
D---E---F---G origin/master
              master

是否可以在origin/master上发起pull请求?

我尝试了git request-pull feature/awesomeFeature origin,但没有成功。


2
有关Git(软件)和GitHub(Web服务)中拉取请求的区别,这里有一些很好的细节(https://dev59.com/7W025IYBdhLWcg3wEhjr)。 - RBT
3个回答

39
如果你已经在本地开发了你的特性分支,只需使用以下命令:git request-pull origin/master feature/awesomeFeature。这将只会给出更改的摘要信息。如果你想获取每一个细节,请记得在你的命令行中添加-p(用于补丁)。

它给了我一个错误 - 致命错误:无效的修订版:病毒式广告问题:基于C#的解决方案。我已经fork了一个Github存储库。然后创建了一个分支。然后进行了一次提交。 - RBT
你如何“合并”这样生成的拉取请求(包括-p)?你是通过在diff的开头进行切割,然后使用git apply来实现的吗? - Novellizator
为什么你不需要先推送它呢? - IEnjoyEatingVegetables

4

Git本身并不支持“Pull Requests”,因此您需要另一个系统来管理和实现这个功能。如果您想自己托管代码库,可以使用类似GitLab的软件来管理您的仓库,并允许您发起“Pull Requests”请求。


5
“pull requests” 不行,但是 “request-pull” 可以!这不是正确的答案,因为问题是关于获取正确的“request-pull”命令。请检查我的答案。 - ArnaudR
3
我认为问题在于粗体部分,“是否可以在origin/master上发起拉取请求?”你指出了Git中有一些内置的拉取请求功能,但据我所知,如果没有其他工具,无法“强制进行代码审查”。请注意,我的翻译尽力使原意保持不变且易于理解,不包含任何额外信息。 - Adam H

1

是否可以在 origin/master 上发起拉取请求?

只要 origin/master 是一个有效的分支,就可以。

但是在 Git 2.23(2019 年第三季度)中,“git request-pull”已经学会警告当我们从本地存储库和发布的存储库中请求拉取的引用不同时。

查看 提交 0454220, 提交 5731dfc (2019年5月28日) 由 Paolo Bonzini (bonzini).
(合并自 Junio C Hamano -- gitster --提交 dedc046, 2019年6月17日)

request-pull: 如果远程对象与本地对象不同则发出警告

在某些情况下,即使指向相同提交,git request-pull 也可能使用不同的远程和本地对象调用。
例如,远程对象可能是轻量级标签,而本地对象是带注释的标签;或者用户可能已经在本地重新编辑了标签但忘记了推送它。

当出现这种情况时,git-request-pull 不会发出警告,因为它只检查 "git ls-remote" 返回的 SHA1 是否与本地提交相匹配(在脚本中称为 $headrev)。

此补丁将使 git-request-pull 在处理 "git ls-remote" 输出时检索标签对象 SHA1,以便可以将其与本地对象匹配。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接