【问题标题】:How to recreate a branch from pull request?如何从拉取请求重新创建分支?
【发布时间】:2017-02-14 01:11:51
【问题描述】:

我分叉了一个项目,从 master 创建了一个新分支,进行了更改并创建了对原始项目的拉取请求。但突然间我忘记了我创建了这个拉取请求,并从远程(GitHub)和我的 PC 上完全删除了我的 fork。如何从拉取请求中重新创建分支(或分支)以添加更改并让它合并?

【问题讨论】:

  • PR 还开着吗?如果您删除了 fork 中的分支,PR 会自动关闭。不知道如果您改为删除分叉会发生什么。
  • 仍然打开,只是注释:“从 me/branch 删除project/master
  • *正好“到 project:master 来自 unknown repository

标签: git github


【解决方案1】:

你可以做两件事:

1.联系 GitHub 支持

在为您尝试我的解决方案时,我删除了一个分支,我自己的 PR 仍在等待中,并且与您的情况相同。

除了联系 GitHub 支持之外,目前无法重新附加到该 PR。他们可以恢复已删除的分叉,这也会将其重新附加到待处理的 PR。然后,您可以简单地克隆您的 fork,更改您的 PR 分支并推送。

在我的案例中,GitHub 工作人员回复联系表只是几分钟的事情。 为 GitHub 鼓掌

2。制作新的 PR

如果您不想打扰 GitHub 支持,或者他们对您来说太慢或不愿意,您可以执行以下操作:

  • 重新创建你的分叉
  • 通过执行git fetch <your configured remote for upstream> refs/pull/<your PR number>/head:<your branchname> 从拉取请求重新创建您的分支

这将为您在本地重新创建 PR 分支,然后更改您想要更改的任何内容,关闭原始 PR 并打开一个新的。

【讨论】:

  • git fetch 给我fatal: 'upstream' does not appear to be a git repository fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
  • 当然你必须填写远程在本地存储库中的命名方式。对我来说,我遵循广泛的约定,即我的 fork 称为 origin,主 repo 称为 upstream
  • 我终于设法使用第二种方法(使用您的答案获取代码并创建新 PR),谢谢
【解决方案2】:

解决此问题的一种方法:

$ mkdir repo
$ git init; git remote add origin git@github.com:original/repo.git # not your fork

现在打开.git/config 并添加这一行:

fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

原来是这样的:

[remote "origin"]
  url = git@github.com:original/repo.git
  fetch = +refs/heads/*:refs/remotes/origin/*
  fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

然后运行

$ git fetch origin
$ git checkout origin/pr/<your pr number, as shown in their github repo>

然后只需在你的 fork 中添加一个新的遥控器,然后向上推分支

【讨论】:

  • git fetch origin 产生这个:Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
  • 啊,很好,有了 refs/pull/ 命名空间的知识,我上面的解决方案变得容易多了。 :-) 但这不会和我的解决方案有同样的问题吗,一旦你删除了 fork,PR 就不再附加到你的 repo 了?或者你能以某种方式重新连接吗?
  • 可能是,但我希望我至少可以从那个 PR 中获取代码(这是一次提交,因此可能更容易),然后创建一个新的 PR 和新分支。
  • 是的,我刚刚咨询了 GitHub 工作人员。有一种方法,但仅限于它们。阅读我更新的答案。 :-)
猜你喜欢
  • 2016-05-13
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 2020-08-23
  • 1970-01-01
  • 2022-08-13
相关资源
最近更新 更多