如何使用 EGit 发出拉取请求?

Posted

技术标签:

【中文标题】如何使用 EGit 发出拉取请求?【英文标题】:How do I make a pull request using EGit? 【发布时间】:2016-08-19 14:10:15 【问题描述】:

我有一个本地 master 分支,我想用别人拥有的 repo 创建一个拉取请求。当我尝试“推送分支”时,我得到以下文本:“无法连接到任何 URL:https://github.com/jleclanche/fireplace: git-receive-pack not allowed”

我猜我在这里所做的实际上是尝试合并,而不是提出请求。我该怎么做?

【问题讨论】:

Pull 请求是托管服务商 GitHub 的一个功能,而不是 git 本身,所以我怀疑这个功能在 egit 中是否可用。 【参考方案1】:

如果您从 Eclipse 提交更改,但由于冲突您无法获取拉取请求,因此请按照以下步骤从 git bash 命令获取拉取请求

    混帐状态

    git checkout 开发机器人

    git log [检查你的提交是否存在]

    git 拉

    git 结帐

    git rebase 开发机器人

    git push -u -f 来源

【讨论】:

【参考方案2】:

在此答案中,我假设您对相关项目具有提交权限,但仍想创建拉取请求。在这种情况下,不需要 fork 存储库。

    在 Eclipse 中创建一个本地分支(团队 -> 切换到 -> 新分支...,使用默认值)并处理它。最后,将分支推送到 GitHub 存储库。 转到github.com 上的存储库。 GitHub 通常会识别出你推送了一个分支并提供 直接创建拉取请求的选项。或者,您应该能够从“拉取请求”选项卡创建拉取请求。

【讨论】:

【参考方案3】:

这些是派生存储库、进行更改并最终打开拉取请求以将更改合并回原始存储库所必需的步骤。

    在 GitHub 上,导航到存储库页面,然后单击页面右上角的Fork 按钮

    将分叉存储库的 URL 复制到 create a local clone in EGit

    我建议以your-name/issue-name 的形式创建一个新分支。在单独的分支上工作可以提供更好的监督,并有助于并行处理多个拉取请求。

    Make one or more commits 应该在拉取请求中结束。

    Push 对分叉存储库的这些更改。

    在 GitHub 上,导航到分叉页面。您应该会在此处看到一条消息,指示创建了一个新分支,以及一个用于创建拉取请求的按钮。单击此按钮。在下一页,您可以提供更多信息并最终确认拉取请求的创建。

为了使用对原始存储库所做的更改,您需要将其作为 remote 添加到本地克隆。

您甚至可能想要重命名远程,以便将分叉存储库(您要推送到的存储库)命名为 fork,而原始存储库使用默认名称 origin

例如:

[remote "fork"]
  url = git@github.com:your-name/forked-repo.git
  fetch = +refs/heads/*:refs/remotes/fork/*
[remote "origin"]
  url = git@github.com:user/originating-repo.git
  fetch = +refs/heads/*:refs/remotes/origin/*

【讨论】:

以上是关于如何使用 EGit 发出拉取请求?的主要内容,如果未能解决你的问题,请参考以下文章

如何避免使用 API 延迟 github 拉取请求合并

如何使用 git 查看 GitHub 拉取请求?

如何使用 EGit 克隆创建 Eclipse 项目

在功能分支上测试时如何使用 Git 拉取请求

在发出拉取请求之前,是不是有任何理由将功能分支合并到分叉主控中?

如何使用“合并前需要拉取请求审查”来保护分支