我复制了一个公共仓库,并将新仓库设置为私有。
我在私有仓库中添加了一个带有修复内容的新远程分支。
现在,我想从私有仓库中的分支向我从中复制的公共仓库创建拉取请求。
我选择私有仓库中的分支,然后点击“拉取请求”。
我点击“更改提交”。
我无法更改组织/仓库所有者。我只看到我的组织,但看不到公共仓库的组织。我只能创建一个针对私有仓库主分支的拉取请求,但这不是我想要的。
是否不可能在私有仓库中修改公共仓库的内容并随后创建一个拉取请求?
我复制了一个公共仓库,并将新仓库设置为私有。
我在私有仓库中添加了一个带有修复内容的新远程分支。
现在,我想从私有仓库中的分支向我从中复制的公共仓库创建拉取请求。
我选择私有仓库中的分支,然后点击“拉取请求”。
我点击“更改提交”。
我无法更改组织/仓库所有者。我只看到我的组织,但看不到公共仓库的组织。我只能创建一个针对私有仓库主分支的拉取请求,但这不是我想要的。
是否不可能在私有仓库中修改公共仓库的内容并随后创建一个拉取请求?
@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身份验证,我使用带有ed25519 ssh密钥的ssh方式(这个SO问题中的方法),因此我的连接URI看起来像这样:ssh://git@github.com/<user>/<repo>
。
符号说明:->
表示鼠标点击或选择;right->
和double->
分别表示右键单击和双击。
我通过将每个更改放在不同的分支中(pub
表示公共更改;priv
表示私人更改)来区分公共和私人更改。我对git并不是很熟悉,所以可能还有更好的方法来实现它。
Branches
, 然后打开 Local
(每个旁边都有->v
)右键-> master -> Create Branch -> 选择 -> private/master -> OK
输入“priv”作为 Branch name: -> 为推送和拉取配置上游 ->当拉取:合并 ->完成
右键-> master -> Create Branch
输入“pub”作为Branch name: -> 完成
private/master
,我的公共分叉 orign/master
和原始的公共存储库 upstream/master
中所有的提交编号均匹配。Git Staging
选项卡中查看详细信息-> Commit and Push -> 预览 -> 推送 -> 关闭
右键-> priv -> Push Branch -> 远程:下拉菜单v -> origin: URI
(我的是 origin:ssh://git@github.com/cb4/org.aspectj) 在Branch: 文本框中双击 master
, 并输入priv
然后 双击-> priv [branch] -> 预览 -> 推送 -> 关闭
其他功能和函数
右侧 -> 公开 -> 推送分支 -> 预览 -> 推送 -> 关闭
右侧 -> upstream -> Fetch
右侧 -> origin -> Push
右侧 -> private -> Push