GitHub从私人到公共回购的请求可能吗?

Seb*_*ebi 11 git github

我分叉了一个公共回购,并将新的回购私有化.

我在我的私人仓库上添加了一个新的远程分支,并提交了一些修复程序.

现在,我想从我的私人仓库中的分支机构向我分叉的公共仓库创建一个拉取请求.

我在私人仓库中选择分支,然后单击"拉取请求".

我点击"更改提交".

我无法更改组织/回购所有者.我只看到我的组织,但不是公共回购.我只能对我的私人仓库的主分支创建一个拉取请求,但这不是我想要的.

是不是可以在私人仓库中修复公共仓库的某些东西并在之后创建拉动​​请求?

cb4*_*cb4 7

2021 年更新

@VonC 的答案在概念上是正确的,并且仍然是 GitHub 支持的答案。九年后,@Sebi终于得到了他想要的答案——我消除了他评论的 VonC 答案第二个项目符号中出现的“间接”。

对于我的用例,我需要对公共存储库进行公共私人更改。公共提交一旦准备好就可以定期推送。私人更改必须保留在我的私人存储库中,直到我完成我的博士研究。那时,我需要所有私人更改通过拉取请求从我的公共分叉流到原始公共存储库。

大部分工作是正确设置。我在此 SO 答案中提供了详细步骤。以下步骤仅在 eclipse GUI(v2020-12;EGit 5.11)中完成,但可以轻松转换为命令行操作。我使用的存储库是这些:

  • eclipse/org.aspectj原始的公共回购upstream用于获取的遥控器
  • cb4/org.aspectj是我的叉子;遥控origin器用于推送
  • cb4/remPrivAJ是我的远程私人仓库;遥控private器用于推拉
  • I:\local是我工作站上的本地存储库

对于 github 身份验证,我使用 ssh 和 ed25519 ssh 密钥(在这个 SO 问题中如何操作),所以我的连接 URI 如下所示ssh://git@github.com/<user>/<repo>

表示法:-> 是鼠标点击或者选择;right-> double-> 分别是右键单击和双击。


我将公共更改与私人更改分开,将每个更改放在单独pub的分支中:用于私人更改。我对 git 相当陌生,所以可能有更好的方法来做到这一点。priv

  1. 创建和配置分支
  • 1.1 在eclipse Git Perspective中,在本地repo下:打开Branches然后打开Local-> v每个旁边)
  • 1.2 对于私有分支:right-> master -> Create Branch -> Select -> private/master -> Ok输入 priv forBranch name: -> Configure upstream for push and pull -> When pulling: Merge -> Finish
  • 1.3 对于公共分支:right-> master -> Create Branch输入 pub forBranch name: -> Finish
  • 1.4 结果:我的私人仓库private/master、我的公共分叉orign/master和原始公共仓库中的提交号upstream/master都匹配 配置

  1. 进行私人更改并提交
  • Git Staging2.1 进行一些更改,然后在Git 透视图的选项卡上查看有关它们的详细信息
  • 2.2 选择各个更改并通过单击绿色加号将其添加到索引中
  • 2.3 或者通过单击绿色双加号来选择全部
  • 2.4. 输入提交消息并-> Commit and Push -> Preview -> Push -> Close
  • 2.5 记下新的提交号
    犯罪

  1. 私有更改推送到公共分叉
  • right-> priv -> Push Branch -> Remote: dropdown v -> origin: URI(我的是 origin:ssh://git@github.com/cb4/org.aspectj)double-> master在 Branch: 文本框中然后priv输入double-> priv [branch] -> Preview -> Push -> Close

  1. 在 GitHub 上,我的公共分支中的私人更改。请注意此处与上面相同的提交号(单击图像进行缩放)。 更改推送

  1. 要完成该过程并针对原始公共存储库打开私人更改的拉取请求,只需单击Compare & pull request瞧!(点击图片可放大)。 拉取请求

附加特性和功能

  • 当然,您可以将公共提交推送到公共分叉:right-> pub -> Push Branch -> Preview -> Push -> Close
  • 尽可能频繁地从原始公共存储库中提取和合并更新,以减少合并冲突:在远程下right-> upstream -> Fetch
  • 然后将它们推到您的叉子上:在“遥控器”下right-> origin -> Push
  • 并到您的私人存储库:在遥控器下right-> private -> Push


Von*_*onC 6

一种解决方案是将原始公共仓库分配到您在GitHub上的公共仓库中.
然后将公共仓库(您拥有的)分成私有仓库.

然后在本地工作站上克隆两者,并且:

  • 在您的私人本地仓库上进行公共和私人修改
  • 将任何公开修改推送到您当地的公共回购(您可以推送到您的GitHub公共回购)
  • 在GitHub上从你的分叉公共仓库提出你的拉取请求.

  • @Sebi:“不可能在私有和公共仓库之间创建请求请求”,但是……您不需要发出这种请求:私有和公共仓库都是您的请求。如果您不能进行两次fork,只需一次fork,然后在本地克隆该存储库,然后将其推送到您的私有存储库(不是存储库)。唯一的拉取请求将在您的(叉子)公共回购与原始公共回购之间。*您的*私有和*您的*公共仓库之间的任何通信都是通过从您的*本地*仓库到远程仓库的推送完成的(不需要请求)。 (2认同)